标签: modelsim

配置ModelSim模拟以显示文本

我可以让ModelSim模拟在信号上显示文本(而不是数值)吗?我有几个州机器状态说,

localparam S_IDLE  = 2'b00; 
localparam S_START = 2'b01; 
localparam S_STOP  = 2'b10;
Run Code Online (Sandbox Code Playgroud)

有没有办法显示S_IDLE例如信号而不是00?谢谢.

verilog modelsim

6
推荐指数
1
解决办法
3449
查看次数

使用tcl在Modelsim中查找特定信号何时具有特定值

我正在尝试加快调试速度。在较大的跟踪中,我正在搜索信号的特定值。我在Linux下使用QuestaSim 10.0b。

我已经发现可以使用以下命令在Modelsim / QuestaSim中完成

searchlog -expr { stream == 'h20 } 0
Run Code Online (Sandbox Code Playgroud)

不幸的是,当它的值为“ XX”时,它也与信号“流”匹配,但我只希望它与0x20匹配。如何确定它仅匹配十六进制值,而不匹配未定义的值?

tcl modelsim questasim

6
推荐指数
1
解决办法
1815
查看次数

在 System Verilog 中检测时间刻度

如何从源代码中检测模拟中使用的时间刻度精度?考虑我有一个配置参数(cfg_delay_i),由用户以时间单位给出的一些延迟值作为fs。如果用户给出1000,我的代码在进一步执行之前必须等待1000fs 或 1ps

#(cfg_delay_i * 1fs );//will wait only if timescale is 1ps/1fs
do_something(); 
Run Code Online (Sandbox Code Playgroud)

如果时间刻度精度为1fs,则不会有任何问题,但如果精度高于该精度,则不会等待,它将作为0 delay工作。所以我想编写一个代码来确定用户使用的时间刻度并相应地给出延迟。我预期的伪代码如下所示,

if(timeprecision == 1fs )#(cfg_delay_i * 1fs ) ; 
else if(timeprecision == 1ps )#(cfg_delay_i/1000 * 1ps ) ;
Run Code Online (Sandbox Code Playgroud)

请帮助我确定内部时间刻度单位和精度的逻辑。

modelsim system-verilog uvm system-verilog-dpi

6
推荐指数
1
解决办法
1169
查看次数

Modelsim 和 GHDL 无法将 vhdl 用户定义的信号类型转储到 vcd 中?

我正在尝试从由 modelsim 或 ghdl 执行的模拟中转储内部信号。一切正常使用:

对于modelsim,添加vhdl源,然后编译:

vsim -novopt work.uut_testbench
vcd file ../uut.vcd;
vcd limit 50000000;
vcd add -r /uut_testbench/uut_core/*;
run 6000
quit -sim
Run Code Online (Sandbox Code Playgroud)

对于 GHDL

ghdl -i --ieee=synopsys --warn-no-vital-generic --workdir=work --work=work ./uut*.vhd 
ghdl -m --ieee=synopsys --warn-no-vital-generic --workdir=work --work=work uut_testbench
./uut_testbench --stop-time=6000ns --vcd=../uut.vcd
Run Code Online (Sandbox Code Playgroud)

我可以看到模拟信号,但不是全部。信号定义为

Type InternalState is (Idle,Valid,Stalled);
Signal sState,sPrevState :InternalState;
Run Code Online (Sandbox Code Playgroud)

从 vcd 中省略。这种行为对于modelsim 和ghdl 很常见。

我可以在 ghdl 生成的 vcd 中看到以下行

$comment sstate is not handled $end
Run Code Online (Sandbox Code Playgroud)

Modelsim 只是悄悄地忽略了这些信号

有解决方法吗?选择?

signals vhdl modelsim ghdl

5
推荐指数
1
解决办法
1916
查看次数

ModelSim 消息查看器为空

我目前正在使用 Modelsim 10.1 和 ISE 13.4 并运行一个非常简单的测试平台。所有代码都是VHDL。

assert几天我在使用 VHDL 的声明时遇到了麻烦:错误和警告被输出到抄本。但是,消息查看器中没有消息,波形窗口中也没有消息指示器。如果这很重要,我会从 ISE 内部开始我的模拟。

我想我可能缺少一个开关来打开消息记录或其他东西,但数小时的谷歌搜索没有带来任何东西。是否有任何设置会阻止消息被记录到消息查看器,尽管它会被打印到脚本中?

我已经找到了Simulate->Runtime Options-->Message Severity。但是,那里的一切都未经检查。勾选任何复选框会产生不打印到抄本的预期行为,但消息查看器中仍然没有任何消息的迹象。

谢谢你的时间,

罗伯特

编辑:

好吧,经过一番折腾,终于找到了。

必须将msgmodedisplaymsgmode选项设置为至少both具有良好的消息指示器。这似乎是在我公司早期 ModelSim 版本的默认配置中完成的。

我希望像我这样无知的人发现这个答案有帮助:)

message viewer vhdl modelsim

5
推荐指数
2
解决办法
4961
查看次数

FPGA 的 Scons?

有没有人在相当大的 FPGA 项目中使用“ Scons ”代替“ make ”?它是开箱即用的还是仍然需要为 VHDL 或 Verilog 语言进行一些黑客攻击?与 Modelsim/ISE/Vivado/Quartus 的集成怎么样?或者我应该坚持使用 makefile 一段时间?

verilog fpga vhdl scons modelsim

5
推荐指数
0
解决办法
695
查看次数

弱“H”,模拟中的输入双向信号上拉

有没有办法告诉模拟器(我正在使用 Modelsim)将信号拉到弱的“H”,当它不是由任一双向接口驱动时?

例如,如果我有一个 I2C 信号 I2C_SDA,它被声明为 2 个模块的输入输出。一个是我的实际 UUT,另一个是测试台。两者都有这样的声明:

io_i2c_sda <= r_I2C_DATA when r_I2C_DATA_EN = '1' else 'Z'; 
Run Code Online (Sandbox Code Playgroud)

所以两端都是三态的。这在模拟中工作正常,除了线路一直是蓝色('Z'),两端都没有传输。当两端都没有传输时,如何将这条线拉到代码中的“H”?

vhdl modelsim

5
推荐指数
1
解决办法
1万
查看次数

如何在报告语句中将字符串与整数连接起来?

我无法使以下报告语句起作用:

report "ERROR: instruction address '" & CONV_INTEGER(a(7 downto 2)) & "' out of memory range." severity failure;
Run Code Online (Sandbox Code Playgroud)

哪里a是 类型in std_logic_vector(31 downto 0)

我得到的错误是:

No feasible entries for infix operator "&".
Run Code Online (Sandbox Code Playgroud)

我想打印出一个字符串,连接整数值,然后连接另一个字符串。

我究竟做错了什么?

vhdl modelsim intel-fpga quartus

5
推荐指数
1
解决办法
7902
查看次数

Quartus II 仅在仿真中使用文件

我想在 Quartus 中运行一个仿真。所以我在“分配”菜单中分配了一个测试平台。我的测试平台包括我的 DUT(D) 和一个额外的组件 (E),它仅用于仿真(因此该组件包含不可合成的语句)。如果我从 Testbench 中删除 E,我的模拟就会运行,但是当我想在我的 Testbench 中包含 E 时,我从 modelsim 收到错误:

 my_testbench.vhd(197): (vcom-1195) cannot find expanded name "mylib.only_for_simulation".
Run Code Online (Sandbox Code Playgroud)

我怎样才能让 Quartus/Modelsim 编译 E 文件?

vhdl modelsim quartus

5
推荐指数
1
解决办法
1082
查看次数

使用 Python 和模拟器测试 VHDL / FPGA

测试VHDL代码逻辑的标准方法是在 VHDL 中编写一个测试平台并使用一个模拟器,如ModelSim:其中,我已经做过很多次了。

我听说工程师现在不是用 VHDL 编写测试平台,而是使用 Python 来测试 VHDL 代码。

问题:

  1. 这是怎么做的?

    • 这是通过在 Python 中编写测试台然后编译这个 Python 文件或链接到 Modelsim 来完成的吗?
    • 这是使用像 myHDL 这样的模块在 Python 中完成的,然后将您的 VHDL 文件链接/导入到 Python 中吗?是这样,时序图是怎么生成的?
  2. 在 Python 中编写测试平台时,您可以使用标准的 Python 编码/模块还是仅使用像 myHDL 这样的模块?

    • 例如,如果我想在 VHDL 中测试 TCP/IP 堆栈,是否可以使用 Python 中的套接字模块来执行此操作(即导入套接字)?
  3. 是否有参考资料、论文或教程说明如何执行此操作?我检查了 Xilinx、Altera 和 Modelsim 网站,但找不到任何内容。

我在网上找到的关于将 Python 用于 FPGA 的唯一内容是一些软件包:myHDL 是引用最多的软件包。

python testing fpga vhdl modelsim

5
推荐指数
1
解决办法
7059
查看次数