force语句的使用
笔者在一次仿真工程中,想通过force语句强制使内部的某个信号赋值,将仿真遇到的一些问题总结如下:
- 不管内部信号是reg还是wire,在force赋值时都是reg。
reg reco_coor_vld ;//zuobiao
reg reco_frm_vld ;//ID
reg stim_conf_vld ;//moniyuan
reg start_send_vld ;//send
reg [31:0] suart_data ;//data
reg init_done ;
- 对内部变量直接赋值也是可以的。
initial beginforce top_uut.suart_data =32'h00010001;force top_uut.stim_conf_vld =1'b1;
end
3.正确的操作方法是:
先初始化本地变量与赋值变量(虽然他们的名字一般定义为一样),然后进行赋值。
initial beginclk_40M = 1'b0; clk_100M = 1'b0;clk_125M = 1'b0;clk_156p25M = 1'b0;I_rx_data = 1'b1; force top_uut.suart_data=suart_data;//初始化force top_uut.stim_conf_vld=stim_conf_vld;//初始化force top_uut.start_send_vld=start_send_vld;//初始化force top_uut.reco_coor_vld=reco_coor_vld;//初始化force top_uut.reco_frm_vld=reco_frm_vld; //初始化force init_done= top_uut.init_done; //初始化
endinitial beginsuart_data=0;stim_conf_vld=1'b0;start_send_vld=1'b0;reco_coor_vld=1'b0;reco_frm_vld=1'b0;@(posedge init_done);#100;///==============stim source //赋值操作@(posedge clk_100M)beginsuart_data=32'hffff0100;//contiue send , internal source , increase data stim_conf_vld=1'b1;end @(posedge clk_100M)beginsuart_data=32'h0; //contiue send , internal source , increase data stim_conf_vld=1'b0;end ///==============send start @(posedge clk_100M)beginsuart_data=32'h0;start_send_vld=1'b1;end @(posedge clk_100M)beginsuart_data=32'h0; start_send_vld=1'b0;end ///======zuobiao@(posedge clk_100M)beginsuart_data=32'h00010001;reco_coor_vld=1'b1;end @(posedge clk_100M)beginsuart_data=32'h00010001;reco_coor_vld=1'b0;end ///=ID@(posedge clk_100M)beginsuart_data=32'h00000001;reco_frm_vld=1'b1;end @(posedge clk_100M)beginsuart_data=32'h00000001;reco_frm_vld=1'b0;end end
force语句的使用相关推荐
- verdi中如何查看force信号信息
转载:verdi中如何查看force信号信息 | 骏的世界 (lujun.org.cn) 在仿真中,我们会有对信号进行force的操作,从而实现某些特定的功能.但是在仿真波形中,不能直接从波形上看出, ...
- navicat for mysql执行sql语句报错: [Err] 1146 - Table ‘performance_schema.session_status‘doesn‘t exist 解决办法
navicat for mysql执行sql语句报错: [Err] 1146 - Table 'performance_schema.session_status' doesn't exist 解决办 ...
- Verilog初级教程(14)Verilog中的赋值语句
文章目录 前言 正文 合理的左值 过程性赋值(Procedural assignment) 连续赋值 过程连续性赋值 往期回顾 前言 何为赋值语句?即将值放到线网或者变量上,这种操作称为赋值,英文:a ...
- Verilog testbench总结(二)
1.激励的设置 相应于被测试模块的输入激励设置为reg型,输出相应设置为wire类型,双向端口inout在测试中需要进行处理. 方法1:为双向端口设置中间变量inout_reg作为该inout的输出寄 ...
- SAS 对数据的拼接与串接
SAS 对数据的拼接与串接 使用SAS对数据进行串接.合并.更新与修改. 1. 数据集的纵向串接 数据集的纵向串接指的是,将两个或者多个数据集首尾相连,形成 一个新的数据集. 对数据集的纵向串接可以通 ...
- 如何编写testbench的总结(非常实用的总结)
1.激励的设置 相应于被测试模块的输入激励设置为reg型,输出相应设置为wire类型,双向端口inout在测试中需要进行处理. 方法1:为双向端口设置中间变量inout_reg作为该inout的输出寄 ...
- SAS︱数据索引、数据集常用操作(set、where、merge、append)
代码部分大多来源于姚志勇老师的<SAS编程与数据挖掘商业案例>. 每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ ------------ ...
- 大疆FPGA/芯片开发工程师(A卷)笔试题(含详解)
大疆芯片开发岗A卷 文章目录 一.单选题 二.多选题 三.填空题 四.问答题 **说明:答案仅供参考,个别可能存在错误.** 一.单选题 1.下列关于多bit数据跨时钟域的处理思路,错误的有 A ...
- jk触发器改为四进制_锁存器、触发器、寄存器和缓冲器的区别
一.锁存器 锁存器(latch)---对脉冲电平敏感,在时钟脉冲的电平作用下改变状态 锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才 ...
最新文章
- R语言ggplot2可视化散点图(scatter plot)、并在可视化图像的顶部和右边添加边缘直方图(Marginal Histogram)、使用geom_smooth函数基于lm方法拟合数据点之间
- 分支结构,循环结构,for循环,九九乘法表
- 人才短缺是数据中心运营商面临的新问题
- linux 农业分析,基于嵌入式Linux的农业信息采集系统设计与研究
- [渝粤教育] 西南科技大学 数据库应用 在线考试复习资料
- 工作流实战_28_flowable 任务多实例
- numpy 数组访问方式_索引、切片、迭代
- Nacos 快速开始
- r语言热图对列不进行聚类_R语言:手把手教你画pheatmap热图
- 作为Scala语法糖的设计模式
- 15张图带你彻底明白spring循环依赖,再也不用怕了
- OpenCV基础——IplImage中的widthStep
- 自己做量化交易软件(40)小白量化实战13--Alpha101及自编因子公式
- 计算机表格合并居中,表格合并居中快捷键
- 微信小程序--给头像添加logo(生成海报同理)
- leetcode打家劫社简单实现--python
- python监控端口_python监控设备端口示例
- Windows11无法打开Windows安全中心(需要使用新应用打开此windowsdefender链接)
- 事件坐标:screenX,clientX,pageX,offsetX的区别
- koreader如何选择kindle的版本
热门文章
- Codeforces 1000D dp
- java double 的精度_java double类型相加精度问题的解决
- 2021-08-25王汕8.25国际黄金白银晚间价格走势分析及原油期货空单解套操作建议
- 《天地图电子地图符号与注记说明2015》线宽及字体单位转换
- DMS、RDS、OLAP简介
- NySQL 存储过程基本语法及实例
- C/C++实现循环左移,循环右移
- Springboot集成Redis和Redis工具类
- 信息收集----CMS指纹识别
- 平板电脑 android系统升级,【重磅升级】开源平板电脑(FSPAD-733)升级至Andriod6.0系统...