diff --git a/contrib/linx/flows/tools/linx_trace_diff.py b/contrib/linx/flows/tools/linx_trace_diff.py index 0e42e18..7819796 100755 --- a/contrib/linx/flows/tools/linx_trace_diff.py +++ b/contrib/linx/flows/tools/linx_trace_diff.py @@ -8,7 +8,7 @@ from typing import Optional -DEFAULT_COMMIT_SCHEMA_ID = "LC-COMMIT-BUNDLE-V1" +DEFAULT_COMMIT_SCHEMA_ID = "LC-COMMIT-BUNDLE-V2" # Decision 0142 minimum commit/retire bundle fields (as used by LinxCore M1): # pc/insn/len/next_pc + wb/mem/trap groups. @@ -36,16 +36,27 @@ "insn", "len", "next_pc", + "src0_valid", + "src0_reg", + "src0_data", + "src1_valid", + "src1_reg", + "src1_data", + "dst_valid", + "dst_reg", + "dst_data", "wb_valid", "wb_rd", "wb_data", "mem_valid", + "mem_is_store", "mem_addr", "mem_wdata", "mem_rdata", "mem_size", "trap_valid", "trap_cause", + "traparg0", ] diff --git a/contrib/linx/flows/tools/run_linx_qemu_vs_pyc.sh b/contrib/linx/flows/tools/run_linx_qemu_vs_pyc.sh index 53bb2c6..0874391 100755 --- a/contrib/linx/flows/tools/run_linx_qemu_vs_pyc.sh +++ b/contrib/linx/flows/tools/run_linx_qemu_vs_pyc.sh @@ -2,8 +2,54 @@ set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" -LINX_ROOT="$(cd "${ROOT}/../.." && pwd)" -LINXCORE_ROOT="${LINXCORE_ROOT:-/Users/zhoubot/LinxCore}" +PYC_ROOT="$(cd "${ROOT}/../.." && pwd)" + +find_linx_root() { + local cand + if [[ -n "${LINX_ROOT:-}" && -d "${LINX_ROOT}/tools/bringup" ]]; then + echo "${LINX_ROOT}" + return 0 + fi + for cand in \ + "$(cd "${ROOT}/../../../.." && pwd)" \ + "$(cd "${PYC_ROOT}/.." && pwd)" \ + "/Users/zhoubot/linx-isa" + do + if [[ -d "${cand}/tools/bringup" ]]; then + echo "${cand}" + return 0 + fi + done + return 1 +} + +LINX_ROOT="$(find_linx_root)" || { + echo "error: unable to resolve linx-isa superproject root" >&2 + exit 2 +} + +find_linxcore_root() { + local cand + if [[ -n "${LINXCORE_ROOT:-}" && -d "${LINXCORE_ROOT}/generated/cpp/linxcore_top" ]]; then + echo "${LINXCORE_ROOT}" + return 0 + fi + for cand in \ + "${LINX_ROOT}/rtl/LinxCore" \ + "/Users/zhoubot/LinxCore" + do + if [[ -d "${cand}/generated/cpp/linxcore_top" ]]; then + echo "${cand}" + return 0 + fi + done + return 1 +} + +LINXCORE_ROOT="$(find_linxcore_root)" || { + echo "error: unable to resolve LinxCore root" >&2 + exit 2 +} DEFAULT_SRC="" for cand in \ @@ -18,7 +64,7 @@ do done SRC="${1:-$DEFAULT_SRC}" -LLVM_BUILD="${LLVM_BUILD:-$HOME/llvm-project/build-linxisa-clang}" +LLVM_BUILD="${LLVM_BUILD:-${LINX_ROOT}/compiler/llvm/build-linxisa-clang}" LLVM_MC="${LLVM_MC:-$LLVM_BUILD/bin/llvm-mc}" QEMU_BIN="${QEMU_BIN:-}" @@ -50,7 +96,7 @@ OBJ="$WORK/test.o" QEMU_TRACE="$WORK/qemu.jsonl" PYC_TRACE="$WORK/pyc.jsonl" TRACE_SCHEMA_VERSION="${LINX_TRACE_SCHEMA_VERSION:-1.0}" -COMMIT_SCHEMA_ID="${LINX_COMMIT_SCHEMA_ID:-LC-COMMIT-BUNDLE-V1}" +COMMIT_SCHEMA_ID="${LINX_COMMIT_SCHEMA_ID:-LC-COMMIT-BUNDLE-V2}" DFX_DUMP_DIR="${LINX_DIFF_DFX_DUMP_DIR:-$WORK/dfx_dump}" DFX_PRE="${LINX_DIFF_DFX_PRE:-8}" DFX_POST="${LINX_DIFF_DFX_POST:-16}" diff --git a/runtime/cpp/pyc_linxtrace.hpp b/runtime/cpp/pyc_linxtrace.hpp index 0149042..e1045aa 100644 --- a/runtime/cpp/pyc_linxtrace.hpp +++ b/runtime/cpp/pyc_linxtrace.hpp @@ -208,11 +208,13 @@ class LinxTraceWriter { } private: - static constexpr std::array kCanonicalStageOrder = { - "IB", "D1", "D2", "D3", "S1", "S2", "IQ", "P1", - "I1", "I2", "E1", "W1", "W2", "CMT", "FLS", "XCHK", + static constexpr std::array kCanonicalStageOrder = { + "F0", "F1", "F2", "F3", "F4", "D1", "D2", "D3", "IQ", "S1", + "S2", "P1", "I1", "I2", "E1", "E2", "E3", "E4", "W1", "W2", + "LIQ", "LHQ", "STQ", "SCB", "MDB", "L1D", "BISQ", "BCTRL", "TMU", "TMA", + "CUBE", "VEC", "TAU", "BROB", "ROB", "CMT", "FLS", "XCHK", "IB", }; - static constexpr const char *kPipelineSchemaId = "LC-TRACE1-FA870FA28B15"; + static constexpr const char *kPipelineSchemaId = "LC-TRACE1-1ABD8F1C22C0"; struct RowInfo { std::uint64_t row_id = 0;