一.布局布线策略遇到主机号和内核不对,根据AI建议修改文件
首先正常 FPGA 工程策略 不需要绑定电脑主机号 。
这个设置是干什么的?
它是为了 多机 / 多节点 PAR 加速 用的。
比如公司有几台机器:
```
PC_A
PC_B
PC_C
```
可以配置节点列表,让工具尝试把布局布线任务分配到指定机器上运行。
二 .lattice 软件线上逻辑分析仪的使用

Sequence Depth: 1 ; Max Sequence Depth: 2 ;Max Event Counter: 1 这个几个选项是什么意思 然后怎么选么?
Sequence Depth:表示 触发序列深度 ,也就是触发条件要分几步发生。
Sequence Depth = 1
表示普通单步触发:只要 TU1 满足,就触发
Sequence Depth = 2表示两步顺序触发:
先发生 TU1
然后再发生 TU2
最后触发
2. Max Sequence Depth 是什么意思?
Max Sequence Depth
表示这个 Trigger Expression 最多支持几步触发序列 。Max Sequence Depth = 2 只是最大能力,实际 Sequence Depth = 1 时就是普通一步触发,可以正常用
比如:Max Sequence Depth = 2
说明这个触发表达式最多能支持:如果你后面想做三步触发:
那就需要:但 Max Sequence Depth 越大,占用资源越多。
3. Max Event Counter 是什么意思?
表示支持 事件计数触发 的最大能力。简单理解就是:
Max Event Counter = 1
表示不做复杂计数,基本就是:例如:
这是最省资源、最常用的设置。
如果 Event Counter > 1
比如你想:
第 10 次 line_start 后触发
那就需要更大的 Event Counter。但这会增加硬件资源,可能用更多 slice,甚至 EBR。
4.新增/删除 Trace 信号
新增/删除 Trigger 信号
改变采样时钟 Sample Clock
改变 Buffer Depth
改变 Max Sequence Depth
改变 Max Event Counter
改变 Trigger Unit 数量
改变 RAM Type:Slices/EBR
或者说:
Max Sequence Depth 和 Max Event Counter 跑完后基本不能改;
Sequence Depth 可以在不超过 Max Sequence Depth 的范围内调整;
触发值 Value 跑完后可以改。
-
Trigger Out 可以干什么?
-
联动其他 Reveal Core
如果你有多个 Reveal 逻辑分析仪 core,可以用一个 core 的 Trigger Out 去触发另一个 core。
比如:
这样多个逻辑分析仪可以同步抓。
- 输出到 FPGA 引脚给示波器看
可以把 Trigger Out 接到一个 FPGA GPIO 管脚。
当内部触发发生时,外部示波器看到一个脉冲。
用途:
- 给内部逻辑做调试标志
比如触发后让某个 debug 逻辑开始计数、拉高标志位等。
不过一般不建议让正式业务逻辑依赖这个信号,它主要是调试用。
你现在需不需要用?
大多数情况下 不需要用 。
如果你只是用 Reveal 看内部波形,比如:
那 Trigger Out 可以不接、不启用。
什么时候需要启用?
只有这些场景才用:
否则保持默认即可。
和 Trigger In 的区别
Trigger In
外部/其他逻辑给 Reveal 一个触发输入:
别人触发 Reveal
Trigger Out
Reveal 触发后输出一个信号:
Reveal 触发别人
三 线上分析仪设置页面

这是 **Lattice Reveal Inserter 的 Trace Signal Setup 页面**,主要决定 **怎么采样、采多少、用什么资源存波形、是否带触发信号**。
下面逐项解释。
1. Sample Clock
截图里是:
Sample Clock = i_rx_inst/local_clk
意思是 Reveal 用哪个时钟去采样 Trace 信号。
也就是:
每来一个 local_clk 上升沿,Reveal 采一次你选的信号
怎么选?
原则:
Sample Clock 要和你抓的信号在同一个时钟域
注意
如果时钟选错,比如用 `local_clk` 去抓 `rx_byte_clk` 域的信号,可能看到:
偶发跳变
亚稳态
采不到真实连续数据
看起来像没信号
2. Buffer Depth
截图里是:
Buffer Depth = 512
表示每个 Trace 信号保存多少个采样点。
比如:
512 个点
就是触发前后总共保留 512 个采样周期的数据。
越大有什么影响?
优点:
能看更长时间的波形
缺点:
占更多 EBR / RAM 资源
3. Implementation
截图里是:
Implementation = EBR
2 EBRs
意思是 Reveal 的波形缓存用 FPGA 内部 **EBR 块 RAM** 实现。
2 EBRs表示当前这些 Trace 信号 + Buffer Depth 大概要用 2 个 EBR。
怎么选?
一般推荐:EBR
因为抓波形缓存比较适合用 EBR。
但如果 EBR 资源不够,可以考虑:
Distributed RAM / Slices
不过那会消耗 LUT/Slice,可能影响时序。
你这里如果 EBR 紧张,要优先减少:
Trace 信号位宽
Buffer Depth
而不是随便改 Implementation。
4. Timestamp
截图里:
```text
Timestamp 未勾选12 Bits
Timestamp 是时间戳功能。
开启后,每个采样点或触发事件会带一个时间计数信息,用来判断事件间隔。
什么时候用?
如果你想知道:两个事件之间隔了多少采样周期
可以开。
缺点
会增加保存的数据位宽,占更多 RAM/EBR。
5. Sample Enable
截图里没有启用。
Sample Enable表示只有某个使能信号有效时,Reveal 才采样。
例如:
Sample Enable = dt_valid
Active High
意思是:
只有 dt_valid = 1 的时候才存波形
优点
可以节省采样深度,只保存关键时刻。
缺点
如果使能信号本身就不稳定,可能导致你以为没波形。先连续采样更直观。
6. POR Debug
截图里没启用。
POR Debug
一般是 Power-On Reset Debug,上电复位阶段调试用。
用于抓 FPGA 上电、复位释放附近的信号状态。
什么时候用?
比如你怀疑:
上电初始化异常
复位释放顺序异常
PLL lock 之前逻辑乱跑才考虑开。
7. Data Capture Mode
截图里选择的是:
```text
Single Trigger Capture
意思是:触发一次,抓一段波形,然后停止
Single Trigger Capture
适合普通调试。
比如:
dt_valid == 1 触发一次
抓 512 个点
停止推荐你现在用这个。
Multiple Trigger Capture
多次触发采集。
比如:
每次 dt_valid 出现都抓一小段
连续抓多次
适合抓重复事件。
但配置更复杂,也会影响缓存分配。
8. Minimum samples per trigger
截图里是灰色:
Minimum samples per trigger = 8
只有 Multiple Trigger Capture 开启时才有用。
意思是每次触发至少保存多少采样点。
当前你用 Single Trigger,这个不用管。
9. Number of triggers for POR
截图里是灰色:
Number of triggers for POR = 1和 POR Debug / 多触发相关。
10. Include trigger signals in trace data
意思是:
把触发信号也一起放到波形里显示
举例
如果你的触发信号是:
dt_valid但你没有把 `dt_valid` 加到 Trace Signal 里。
勾选这个后,Reveal 会把 trigger 信号也存进波形。
建议
如果你想在波形里看到触发信号,建议:直接把它加到 Trace Signal
这样更明确。
这个选项可以不勾。
11. Disable all Distributed RAMs
这个通常和内部缓存实现方式有关,用来禁止使用 Distributed RAM。
一般不用管。
一总结:
这个页面主要设置 Reveal 怎么采样、采多少、用什么 RAM 存。
你当前建议用 Single Trigger、EBR、Buffer Depth 256/512,Sample Clock 要选和被抓信号同一个时钟域。