lattice软件遇到问题大集合

一.布局布线策略遇到主机号和内核不对,根据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 跑完后可以改。

  1. Trigger Out 可以干什么?

  2. 联动其他 Reveal Core

如果你有多个 Reveal 逻辑分析仪 core,可以用一个 core 的 Trigger Out 去触发另一个 core。

比如:

这样多个逻辑分析仪可以同步抓。

  1. 输出到 FPGA 引脚给示波器看

可以把 Trigger Out 接到一个 FPGA GPIO 管脚。

当内部触发发生时,外部示波器看到一个脉冲。

用途:

  1. 给内部逻辑做调试标志

比如触发后让某个 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 要选和被抓信号同一个时钟域。