您现在的位置:首页 >> 品牌家居

SystemVerilog $unit 校对单元介绍

发布时间:2025/08/06 12:17    来源:平湖家居装修网

gin $display(" **********************"); print; $display(" ***********End*********"); endendmodule

下面列车运行结果:

此时终于把整合$unit载入各别反之亦然的具体内容列印出来了

通过这个流程确实断定,在列车运行流程中所,先从module核心找有很难新闻稿,如果很难新闻稿再从module核心import的自带找,如果还是很难才但会在module受控import的自带中所找

这也就是为什么 载入各别反之亦然在抓取准则中所排第三

那么为什么载入各别反之亦然叫$unit呢?我们可以再把代码更改一下

package a_dpk; //创立一个叫做a_dpk的自带 function print(); $display(" This is in a_dpk!"); endfunctionendpackage//package b_dpk; //创立一个叫做b_dpk的自带// function print();// $display(" This is in b_dpk!");// endfunction//endpackageimport b_dpk:: *; //整合$unit载入各别反之亦然module test_tb; // import a_dpk:: *; //通配符整合 //function print(); // $display(" This is in module!"); //endfunction initial begin $display(" **********************"); print; $display(" ***********End*********"); endendmodule

我们把b_dpk评注打碎,但依旧将其整合,看看列车运行结果

这里直接显示错误在 $unit,或许$unit只是一个名称,就好像上例中所module命叫做test_tb一样

2. 单独载入将自带整合到$unit中所(必要条件载入)

文档为:

在在ifndef xxx 在在define xxx在在endif

这是C语言中所常用的技巧,如果第一次遇见整合运算符将其载入到$unit中所,再次出现则不但会载入

下面我们将上篇记事中所的自带用这种方式仿真一下,先给出上篇记事中所自带的具体内容

package definitions; parameter version = "1.1"; typedef enum {ADD, SUB, MUL} opcodes_t; typedef struct { logic [31:0] a, b; opcodes_t opcode; //新闻稿的opcode中所自带含 ADD, SUB和MUL } instruction_t; function automatic [31:0] multiplier (input [31:0] a, b); return a * b; endfunctionendpackage

我们将UTF-命叫做definitions.dpk,其中所词干.dpk是整天起的

在在ifndef PACK 在在define PACK package definitions; parameter version = "1.1"; typedef enum {ADD, SUB, MUL} opcodes_t; typedef struct { logic [31:0] a, b; opcodes_t opcode; //新闻稿的opcode中所自带含 ADD, SUB和MUL } instruction_t; function automatic [31:0] multiplier (input [31:0] a, b); return a * b; endfunction endpackage import definitions:: *; //将自带整合到$unit中所在在endif

下面是源码和测试文件

在在include "definitions.dpk" //载入自带文件module ALU ( input instruction_t IW, input logic clk, output logic [31:0] result); always @ (posedge clk) begin case(IW.opcode) ADD : result = IW.a + IW.b; SUB : result = IW.a - IW.b; MUL : result = multiplier(IW.a, IW.b); endcase endendmodule在在include "definitions.dpk" //载入自带文件module ALUtb; instruction_t IW; logic clk = 1; logic [31:0] result; always #10 clk = ~clk; //生成时钟,周期性为20ns initial begin IW.a = 'd10; IW.b = 'd5; IW.opcode = ADD; repeat(2) @(negedge clk); IW.a = 'd3; IW.b = 'd7; IW.opcode = MUL; repeat(2) @(negedge clk); IW.a = 'd5; IW.b = 'd1; IW.opcode = SUB; repeat(3) @(negedge clk); $finish; end initial begin $monitor ($time, ,"a->%d, b->%d, opcode->%s, result->%d",IW.a, IW.b, IW.opcode, result); end ALU tb(.IW(IW), .result(result), .clk(clk)); //例化endmodule

列车运行结果如下

本文主要参看

《SystemVerilog操作系统设计及利用计算机》人人都但会用到,但是大部分人不确切是什么的“寻宝内部空间” (baidu.com)。

有伤口吃什么愈合的快
黄芪生脉饮和黄芪精的区别
金嗓子喉宝吃多了会有什么副作用
普通内科
健康新闻
润喉药
心理咨询科
医药信息

上一篇: 搞笑的堂弟

下一篇: 第642期不温不火的戏谑三则-女神经

友情链接