fix(saolei): 修复被编辑器覆盖的 board_top 端口行; 自检脚本支持 -Fix; tcl 默认定义 SAOLEI_ROM
- cpu21_board_top.v: PS/2 例化里 .ev_valid_o 被一行 README 正文覆盖, 综合报 [Synth 8-2715] non-printable character 0xe4 / syntax error near ... - tools/check_rtl_text.ps1: 修掉块注释导致的漏报(board_top 就是被漏掉的那个); 改为按 UTF-8 原始字节读写(保持中文/换行/BOM 不变); 整行正文可用 -Fix 自动删除 - create_project.tcl: 新增 use_saolei 开关并定义宏 SAOLEI_ROM (1=扫雷, 0=走马灯)
This commit is contained in:
@@ -64,6 +64,10 @@ add_files -norecurse -fileset sources_1 [list \
|
||||
set_property file_type {Verilog Header} \
|
||||
[get_files "$origin_dir/srcs/board/cpu21_board_rom.vh"]
|
||||
|
||||
# 默认跑哪个内置程序:1 = 扫雷(定义宏 SAOLEI_ROM),0 = 走马灯 demo。
|
||||
# 只有 cpu21_saolei_rom.vh 存在且 use_saolei = 1 时才会定义宏。
|
||||
set use_saolei 1
|
||||
|
||||
# 扫雷程序的 ROM 初始化(由 saolei/tools/build.ps1 生成,可能还不存在)。
|
||||
# 综合/仿真时定义宏 SAOLEI_ROM 就会用它替换上面的跑马灯 ROM。
|
||||
set saolei_rom "$origin_dir/srcs/board/cpu21_saolei_rom.vh"
|
||||
@@ -74,6 +78,15 @@ if {[file exists $saolei_rom]} {
|
||||
puts "NOTE: 还没有 $saolei_rom —— 需要先跑 saolei/tools/build.ps1 生成"
|
||||
}
|
||||
|
||||
# 关键:sources_1 定义 SAOLEI_ROM,cpu21_board_top.v 里的 `ifdef 链才会用扫雷 ROM
|
||||
# (该宏只影响综合用的 sources_1,仿真 fileset 仍各自用 tb 自带的 ROM)
|
||||
if {$use_saolei && [file exists $saolei_rom]} {
|
||||
set_property verilog_define {SAOLEI_ROM} [get_filesets sources_1]
|
||||
puts "NOTE: sources_1 已定义 SAOLEI_ROM —— 上板跑扫雷;想跑走马灯把本脚本里 use_saolei 改成 0"
|
||||
} else {
|
||||
puts "NOTE: 未定义 SAOLEI_ROM —— 上板跑走马灯 demo"
|
||||
}
|
||||
|
||||
# 约束(cpu21_board_top.xdc 是引脚与分频时钟约束)
|
||||
add_files -norecurse -fileset constrs_1 [glob "$origin_dir/srcs/constrs/*.xdc"]
|
||||
|
||||
@@ -109,6 +122,7 @@ foreach fs {sim_1 sim_2} {
|
||||
# ---------------------------------------------------------------- 结果汇总
|
||||
puts "工程已创建:$origin_dir/$proj_name.xpr"
|
||||
puts " sources_1 顶层 = cpu21_board_top(上板:时钟分频 + 片内 ROM/RAM + 引脚)"
|
||||
puts " sources_1 程序 = [expr {$use_saolei && [file exists $saolei_rom] ? {扫雷 (SAOLEI_ROM)} : {走马灯 demo}}]"
|
||||
puts " sim_1 顶层 = tb_cpu21_riscv_redirect_int_bpb(中断/分支预测)"
|
||||
puts " sim_2 顶层 = tb_no_intr(指令集测试,ROM 镜像在 srcs/rom/)"
|
||||
puts " 下一步:Run Synthesis → Run Implementation → Generate Bitstream,或 Run Simulation"
|
||||
|
||||
Reference in New Issue
Block a user