【数字IC/FPGA】Verilog中的force和release

这篇具有很好参考价值的文章主要介绍了【数字IC/FPGA】Verilog中的force和release。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Verilog中,将force用于variable会覆盖掉过程赋值,或者assign引导的连续(procedural assign)赋值,直到release
下面通过一个简单的例子展示其用法:
加法器代码

module adder
(
input  logic [31:0] a,
input  logic [31:0] b,
output logic [31:0] sum
);
//sum
assign sum = a + b;
endmodule

测试平台代码(主要用于产生激励)

module test;

logic [31:0] a;

logic [31:0] b;

logic [31:0] sum;

initial begin

  forever begin

      a = $urandom % 128;

      b = $urandom % 128;

      #10;

  end

end

//

initial begin

    #200 

    force u_adder.a = 32'd33;

    force u_adder.b = 32'd66;

    #200

    release u_adder.a;

    release u_adder.b;

end

initial begin

   $fsdbDumpfile("adder.fsdb");

   $fsdbDumpvars(0);

   $fsdbDumpMDA();

end

initial begin

   #1000

   $finish;

end

//inst

adder u_adder

(

 .a  (a  ),

 .b  (b  ),

 .sum(sum)

);

endmodule

如上所示,正常情况下,u_adder模块的a和b端口由testbench中的a和b信号驱动,然而,在时间为200ns处,u_adder模块的输入u_adder.a和u_adder.b被强制固定为33和66,如下代码所示。

    #200 
    force u_adder.a = 32'd33;
    force u_adder.b = 32'd66;

又经过200ns后,release语句释放了u_adder.a和u_adder.b的强制赋值,如下代码所示:

    #200
    release u_adder.a;
    release u_adder.b;

编写makefile文件,对上述代码进行仿真,其中,makefile文件的内容如下:

all: listfile com sim verdi clean

listfile:
	find -name "*.sv" > filelist.f

com:
	vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed -sverilog -debug_access -timescale=1ns/10ps \
	-f filelist.f -l com.log -kdb -lca 

sim:
	./simv -l sim.log +fsdb+force


verdi:
	verdi -sv -f filelist.f -ssf *.fsdb -nologo &

clean:
	rm -rf csrc *.log *.key *simv* *.vpd *DVE*
	rm -rf verdiLog *.fsdb *.bak *.conf *.rc *.f

这里,在运行simv文件时,需要加上+fsdb+force选项,即:

./simv -l sim.log +fsdb+force

运行verdi查看波形,有下图:
【数字IC/FPGA】Verilog中的force和release,数字IC设计,fpga开发,数字IC设计
可以看到,第200-400ns,加法器实际的输入a和b被固定为33和66,其值不再与testbench中的a, b绑定。另外,图中的紫色三角形分别表示该信号被force和release的时刻,被force强制指定的值,在显示的时候,前面会有一个^符号,例如上图中的^33和^66文章来源地址https://www.toymoban.com/news/detail-703474.html

到了这里,关于【数字IC/FPGA】Verilog中的force和release的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • m基于FPGA的数字下变频verilog设计

    目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 整个数字下变频的基本结构如下所示 NCO使用CORDIC算法,CIC采用h结构的CIC滤波器,HBF采用复用结构的半带滤波器,而FIR则采用DA算法结构。     这里,我们首先假设不考虑中频信号输入的载波频偏问题,即发送的中频

    2024年02月21日
    浏览(45)
  • Quartus数字秒表verilog代码青创QC-FPGA开发板

    名称:Quartus数字秒表verilog代码青创QC-FPGA开发板(文末获取) 软件:Quartus 语言:Verilog 代码功能: 数字秒表设计 1、支持复位、启动、暂停 2、具有量程切换功能,可以切换显示小时、分钟或者秒、毫秒 3、数码管显示时间,精确到10毫秒 FPGA代码Verilog/VHDL代码资源下载:www.hd

    2024年02月03日
    浏览(39)
  • FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)

    2019   级    电子科学与技术   专业FPGA课程设计 报   告 2022  年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,使用EDA技术设计的结果既可以用FPGA / CPLD来实施验证,也可以直接做成专用集成电路(ASIC)。

    2024年02月03日
    浏览(43)
  • FPGA中的流水线设计(含Verilog范例)

    在高速通信系统设计中,如何提高系统的工作速度至关重要,通常使用的方法有两种: 1. 并行方式设计:可减少模块间的延时; 2. 流水线设计:流水线设计如同生产线一样,将整个执行过程分解为若干个工作段,从流水线的起点连续输入,各操作段以重叠方式执行。使得运

    2023年04月21日
    浏览(31)
  • FPGA小脚丫开发板实现数字时钟,具备调时、整点报时、闹钟功能(含verilog代码)

    一、实现功能 1. 能正常完成时钟的时、分、秒走时; 2. 使用 LED 闪烁或者改变颜色等方式实现秒的指示,要求闪烁频率或者颜色切换频率为 1Hz ; 3. 使用两位七段数码管显示时和分,其切换方式为:默认显示“分钟”,按住 K4 键显示“小时”,按下 K3 显示秒针; 4. 关上开关

    2024年02月11日
    浏览(59)
  • 数字IC/FPGA面试题目合集解析(一)

    1,计算题:计算该触发器等效的建立保持时间(西安某Fabless面试笔试题) 2,计算题:计算组合逻辑的延时时间范围 3,选择题:Which of following ways cannot be used to improve timing of a hold violation path 问题:原触发器,即对于D点的建立时间,保持时间均为2ns,先由于存在线延时,对

    2024年02月06日
    浏览(43)
  • 【数字 IC / FPGA】 有关建立/保持时间计算的思考

    最近准备一些数字IC的机试,刷到了一些有关静态时序分析的题目。有一些比较经典的题目,在这里整理分享一下。 有什么疑问可以在评论区交流~互相进步 假设时钟周期为Tcycle,Tsetup,Thold分别为触发器建立保持时间,为保证时需满足要求,需要满足什么样的时序关系?(T1~

    2024年02月06日
    浏览(46)
  • 数字IC/FPGA面试宝典--经典60道例题详解

    1.关于亚稳态的描述错误的是(A) A、多用几级寄存器打拍可以消除亚稳态。 B、亚稳态是极不稳定的,理论上来讲处在亚稳态的时间可以无限长。 C、亚稳态稳定到0或者1,是随机的,与输入没有必然的关系。 D、如果数据传输中不满足触发器的建文时间Tsu和保持时间Th,可能

    2024年01月16日
    浏览(52)
  • 密码锁设计Verilog代码Quartus 睿智FPGA开发板

    名称:密码锁设计Verilog代码Quartus  睿智FPGA开发板(文末获取) 软件:Quartus 语言:Verilog 代码功能: 1、设计一个密码锁的控制电路,当输入正确代码时,输岀开锁信号用红灯亮、绿灯 熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁 2、在锁的控制电路中储存一个可以修改的4位代

    2024年01月18日
    浏览(46)
  • 【数字IC/FPGA】百度昆仑芯手撕代码--累加器

    已知一个加法器IP,其功能是计算两个数的和,但这个和延迟两个周期才会输出。现在有一串连续的数据输入,每个周期都不间断,试问最少需要例化几个上述的加法器IP,才可以实现累加的功能。 由于加法器两个周期后才能得到结果(再将该结果作为加法器的输入进行累加

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包