modelsim

Incomplete assignment and latches

只愿长相守 提交于 2021-02-11 05:54:16
问题 When incompletely assigning a value I get a latch. But why did I get a latch in the example below? I think there is no need for the latch of F output because it is defined at all values of SEL . Verilog code: always @ (ENB or D or A or B pr SEL) if (ENB) begin Q=D; if (SEL) F=A; else F=B; end Inferred logic: 回答1: Although it is defined at all values of SEL , it is not defined for all values of ENB . If ENB = 0 , your code says that both Q and F should hold the value from the previous cycle.

VHDL Getting a simulation fatal error in the loading design in modelsim

你离开我真会死。 提交于 2021-01-29 09:59:52
问题 (Yes I know there's an easier way, yes my professor is asking for the long way.) The following is the code for my 1 bit adder/subtractor. library ieee; use ieee.std_logic_1164.all; entity FA1Bit is port(x,y,Cin: in std_logic; op: in std_logic; S, Cout: out std_logic); end FA1Bit; architecture FA1Bit_arch of FA1Bit is begin behavior : PROCESS(op,x,y,Cin) begin if op = '0' then --if we're adding the bits; if Cin = '0' then if x = y then S <= '0'; if (x= '1' and y = '1') then Cout <= '1'; else -

How to set the value of a macro using environment variable or command line in verilog?

心不动则不痛 提交于 2021-01-28 19:32:36
问题 I want to define a macro during runtime in Verilog using environment variable. For example, I want to print some text to a file only when the DEBUG macro is defined as 1 . `define DEBUG 0 ... if(DEBUG) $fwrite(file,"Debug message"); How can I override the definition of DEBUG to 1 when running the simulation from command line or using environment variable? Alternatively, I could keep the macro undefined and use ifdef `ifdef(DEBUG) $fwrite(file,"Debug message"); In this case I would have to

How to delete libraries in ModelSim/QuestaSim?

邮差的信 提交于 2021-01-27 19:11:29
问题 I’ve done many projects on this software and I want to delete a big ammount of libraries that are useless and now are giving me errors to simulate my new projects I think the best option is to delete old files(libraries). 回答1: You can either: delete the matching directories on disk and edit the modelsim.ini file(s) by hand, or use vdel.exe . Usage of vdel : PS> .\vdel.exe -h Usage: vdel -help vdel [-lib <path>] [-modelsimini <ini_filepath>] [-verbose] { -all | <primary> [<secondary>] |

Defining different parameter value for simulation and synthesis

蓝咒 提交于 2021-01-27 17:12:31
问题 I'm using systemVerilog and I have a package that holds some of my modules parameter values (for example parameter SPI_RATE = 2_000_000; ). Is there any way I can set one value for simulation and a different one for synthesis? (I'm using ModelSim). For example I would like something like: if(IN_SIM) begin parameter SPI_RATE = 2_000_000; end else begin parameter SPI_RATE = 1_000_000; end Thanks! 回答1: Yes, that's possible. SystemVerilog supports conditional compiler directives such as `ifdef ,

The generate if condition must be a constant expression

走远了吗. 提交于 2020-12-15 04:56:52
问题 I am trying to create an Immediate Generator for RISC-V assembly but I have encountered with if statement. Here is my code in Verilog: module signextend(in, out, sel); parameter nin = 32; parameter nout = 32; input [nin-1:nin-25] in; input [2:0] sel; output [nout-1:0] out; if (sel == 3'b000) begin assign out[19:0] = in[31:12]; assign out[31:20] = {12{in[31]}}; end else if (sel == 3'b001) begin assign out[11:0] = in[31:20]; assign out[31:12] = {20{in[31]}}; end else if (sel == 3'b010) begin

modelsim与debussy联合的问题

↘锁芯ラ 提交于 2020-03-21 21:48:35
最近用modelsim仿真,老出现Warning: (vsim-PLI-3003) F:/project/net_cfg/test_top.v(148):[TOFD] - System task or function '$fsdbDumpSingle' is not defined. 经过几番折腾,我发现是novas.dll文件的问题。在debussy的安装目录下,有几个novas.dll文件,正确的应该是C:\Novas\Debussy\share\PLI\modelsim_pli54\WINNT\novas.dll 而不是\Novas\Debussy\share\PLI\modelsim_pli\WINNT\novas.dll。 只要把C:\Novas\Debussy\share\PLI\modelsim_pli54\WINNT\novas.dll这里的novas.dll拷贝到..\modeltech_6.5\win32下,取消文件..\modeltech_6.5\modelsim.ini的只读属性后,打开。 找到 “; Veriuser = veriuser.sl”替换为“Veriuser = novas.dll”,(这里一定要注意前面的分号也要删除掉,否则无法正确运行,在这里差点吃大亏) 保存;关闭;设为只读。 也不需要在运行仿真脚本中加上vsim -pli novas

vcs和verdi的联合仿真

纵然是瞬间 提交于 2020-03-18 18:51:35
环境配置 首先搭建好vcs和Verdi都能工作的环境,主要有license问题,环境变量的设置。在220实验室的服务器上所有软件的运行环境都是csh。所以,所写的脚本也都是csh的语法。 生成波形文件 Testbench的编写 若想用Verdi观察波形,需要在仿真时生成fsdb文件,而fsdb在vcs或者modelsim中的生成是通过两个系统调用$fsdbDumpfile $fsdbDumpvars来实现的。而这两个系统调用并不是Verilog中规定的,是Verdi以pli(Programming Language Interface)的方式实现的。这就需要让vcs编译时能找到相应的库。 首先在testbench中需加入以下语句 `ifdef DUMP_FSDB initial begin $fsdbDumpfile ( "test.fsdb" ); $fsdbDumpvars ; end `endif 这个编译开关在用vcs编译时加入+define+DUMP_FSDB选项就可以打开,也可以在define.v文件中定义DUMP_FSDB这个宏。 我们现在所接触的仿真波形文件主要有 Wlf 文件 : WLF波形日志文件,是modelsim的专用文件。这个wlf文件只能是由modelsim来生成,也只能通过modelsim来显示。在用modelsim做仿真时,仿真结束都会生成一个*

【工程源码】基于FPGA的Modelsim修改波形显示颜色

£可爱£侵袭症+ 提交于 2020-02-20 18:07:38
本文和设计代码由FPGA爱好者小梅哥编写,未经作者许可,本文仅允许网络论坛复制转载,且转载时请标明原作者。 为啥要修改颜色? 逻辑开发工程师和学生工作学习中免不了需要为设计的逻辑编写设计报告,在编写设计报告时,仿真图作为说明各种信号间工作时序的一个非常有用的内容,经常会被贴到文档中。由于Modelsim波形显示时默认的颜色是在黑色背景中显示绿色波形,整个图像以黑色为主。这样以黑色为主的图像,贴在文档中,当打印出来时会由于耗墨太多而出现色彩不均匀,而且在打印成灰度图片时,绿色相较于黑色的对比度较低,看起来很吃力,所以在编写文档贴图时,都需要将Modelsim的波形显示颜色进行一定的调整。比如将背景色设为白色,波形颜色设为黑色,让其拥有更高的对比度,也能够降低图片打印时的墨粉耗费,让图片质量更高。 在哪儿改颜色 在modelsim主界面菜单中依次点击【Tools】->【EditPreferences】菜单打开配置窗口,注意,是在modelsim主界面,不是在modelsim的wave窗口。如下图所示: 在左侧的Window List中选中Wave Windows选项,然后在中间的Wave Windows Color Scheme中选择一个需要修改颜色的位置,然后点击右侧的调色板中的对应颜色即可。 改哪些颜色? 1、 设置波形背景窗口为白色:waveBackground -> 白色 2、

modelsim学习笔记(1)

心不动则不痛 提交于 2020-01-30 20:29:17
modelsim作为轻量级fpga仿真软件,可以让开发者在不需要连接硬件的情况下进行仿真,非常方便。下面是我在学习使用modelsim的一些记录。 在安装好modelsim之后,首先进入主界面。 在开始写程序之前,我们首先要建立一个自己的库,在file菜单栏找到new这里将库命名为work1。 在建立好库之后,在这个库的目录下建立新的工程,将工程命名为pro1。 建立好工程以后会出现下面这个界面,我们要写新的程序所以选择create new file 在新出现的界面中设置文件名和使用的语言,这里我选择verilog然后创建即可生成一个空的fenpin.v文件 在主程序外,我们还需要一个测试文件,按照上面的操作再建立一个fenpin_test.v文件 我希望实现一个分频的功能,那么实现思路就是分频信号在指定的时钟上升沿变化,这样分频信号的频率就是时钟的1/n,达到分频的要求。 这里就用最简单的2分频来说明 module fenpin( input clk, output reg clk_s ); always @(posedge clk) begin if (clk==1'b1) clk_s<=~clk_s; end endmodule 分频功能实现以后,需要测试文件来验证功能的正确,通过生成一个时钟信号,调用分频模块,观察输出信号是否正确。 `timescale 1ns/1ps