设计
文章平均质量分 70
geter_CS
你要把时间用在美好的事情上,不要总是在不值得的事情上浪费。停止自我否定,多去肯定自己;停止反复懊悔,学会坦然放下;停止急于求成,耐心等待自律带来的变化......
展开
-
汉明码奇偶校验矩阵理解
此代码的纠正原理是:e[0]表示d[0]所在属的三个校验位c[0],c[2],c[3]的校验结果s[0],s[2],s[3]的取&,如果为1表示三个校验位都出错,(按照上面图形解释思想)同时属于这三个校验位的只有d[0],那么就表示d[0]出错了。最后矫正时d[0]^e[0]就是,如果d[0]出错,出错后为0,那么0^1=1,如果出错后为1,那么1^1=0.这样就可以矫正。如果第5位(d2)和第11位(d7)以及第10位(d6)出错:0 0 1 0 1 0 1 1 1 0 1 0 0。原创 2023-05-15 19:41:36 · 3400 阅读 · 5 评论 -
verilog练习1
VL8 使用generate…VL9 使用子模块实现三输入数的大小比较。VL10 使用函数实现数据大小端转换。VL6 多功能数据处理器。VL7 求两个数的差值。VL5 位拆分与运算。原创 2022-11-20 18:56:24 · 367 阅读 · 0 评论 -
verilog练习0
T触发器是在数字电路中,凡在CP时钟脉冲控制下,根据输入信号T取值的不同,具有保持和翻转功能的触发器,即当T=0时能保持状态不变,当T=1时一定翻转的电路。VL2 异步复位的串联T触发器。VL4 移位运算与乘法。VL1 四选一多路器。原创 2022-11-13 13:27:02 · 193 阅读 · 0 评论 -
low power-upf-vcsnlp(六)
add_power_state,create_power_state_group原创 2022-09-10 17:29:50 · 1008 阅读 · 0 评论 -
low power-upf-vcsnlp(五)
set_isolation命令原创 2022-09-08 18:22:04 · 2580 阅读 · 0 评论 -
low power-upf-vcsnlp(四)
create_power_switch原创 2022-09-08 16:41:06 · 870 阅读 · 0 评论 -
low power-upf-vcsnlp(一)
动态功耗:如图中,CMOS反向器输出在0,1之间转换时,对负载电容的重放电过程。原创 2022-09-07 16:47:06 · 3096 阅读 · 0 评论 -
low power-upf-vcsnlp(三)
举个例子定义两个power domain。test.upf内容如下。-update#PD0-update仿真结果,power map如下,注意上面upf中使用了set_scope,所以此时新定义的net VDD0 VSS0,port VDD0 VSS0都是在scope inst0下的:此时instance上显示出两个power domain:两个domain的power是可以不一样的,但是VSS可以是一样的,所以可以将两个domain的VSS连接起来,并且将PD0的power从外面接进去。原创 2022-09-07 16:44:18 · 936 阅读 · 0 评论 -
low power-upf-vcsnlp(二)
二、upf+vcsnlp+verdi实例后文中使用的dut代码和testbench代码,使用的工具版本和参考文献在文末。原创 2022-09-07 16:42:52 · 1052 阅读 · 0 评论 -
JOHNSON计数器,环形计数器,普通计数器
1.普通4bit计数器,n为计数,2^n个状态:module top_module (); reg clk=0; always #5 clk = ~clk; // Create clock with period=10 initial `probe_start; // Start the timing diagram `probe(clk); // Probe signal "clk" // A testbench reg reset; initial begin原创 2021-07-22 20:13:57 · 1266 阅读 · 0 评论 -
用户自定义源语UDP
UDP类似于一张真值表注意点:1.U D P的定义不依赖于模块定义,因此出现在模块定义以外。也可以在单独的文本文件中 定义U D P。 2.U D P只能有一个输出和一个或多个输入(wire)。第一个端口必须是输出端口。此外,输出可以 取值0、1或x(不允许取z值)。输入中出现值z以x处理。U D P的行为以表的形式描述。 3.Table中描述顺序与定义顺序相同":"后面为输出。3.在U D P中可以描述下面两类行为: 1) 组合电路 2) 时序电路(边沿触发原创 2021-07-18 16:35:45 · 419 阅读 · 1 评论 -
全加器门级(结构级),数据流,行为级实现
1位全加器,门结构实现:module top_module (); reg clk=0; always #5 clk = ~clk; // Create clock with period=10 initial `probe_start; // Start the timing diagram `probe(clk); // Probe signal "clk" // A testbench reg ain,bin,cin;原创 2021-07-20 21:04:06 · 1514 阅读 · 1 评论 -
LFSR(线性反馈移位寄存器)
线性反馈移位寄存器LFSR,是移位寄存器的一种,通常用于在数字电路中产生伪随机数。寄存器中的初始值叫做种子,种子应该是非零的。LFSR的下一时刻输入为是由整个移位寄存器值的某些位做异或运算的结果。选取哪些位置 用于移位,是需要进行预先设计好的,目的是要产生一个伪随机并且尽可能长周期的数字序列。 n位LFSR,最多产生2^(n-1)种序列(全零或全一被排除,因为全零异或nor结果为0,不会产生新序列,全1同或xnor也是)。影响下一个状态的比特位叫做抽头。移位寄存器链的多个抽头用作XOR或XNOR门的原创 2021-07-20 19:42:51 · 14966 阅读 · 3 评论 -
验证中filelist以及package的使用
不使用pkg的filist1,使用pakage的filist,嵌套pakage原创 2022-07-09 13:39:32 · 3788 阅读 · 3 评论 -
vcs常用断言debug选项,以及断言的注意点
1.compile添加选项-assert enable_diag之后对应的下列run的选项才能使用:• -assert success (默认只打印assert fail的log,加上此选项后assert success的选项也会打印)• -assert maxsuccess=N(assert success的最大打印次数)2.compile添加选项-assert enable_hier之后对应的下列run的选项才能使用:• -assert hier (可以enable和disable原创 2022-05-29 16:45:46 · 5107 阅读 · 1 评论 -
地址读写hang住case中,怎样中断hang住的读写进程,继续测试后面地址(关于fork的应用)。
比如我们测试某个地址读写的task如上,此task目的是测试是否对地址addr的读写,并不关心读写结果。如果读写的时候某个地址hang住,那么整个验证环境都会hang在这儿,后续地址不能测试到。我们希望的是:在测试到某个地址到hang住时,就中断对此地址的读写进程,测试下一个地址。可以改成这样的fork进程控制:1.最外面这个fork可以不要2.a0进程是测试对addr地址读写,和a1进程时并行的,因为a0是join_none。(这里addr不用automatic接收,因为多个地址并不并..原创 2022-05-13 17:45:42 · 194 阅读 · 0 评论 -
verilog 不定态(X态)传播
verilog语法中if else 和case语句是不能传递x态的。if(1'bx)会默认为0即false,对于case(1'bx),如果有默认default的分支语句,则会匹配到default的语句,如果没有default语句则不会匹配到任何语句。如下代码和波形:module top_module(); reg sel; reg [1:0]out1; reg [1:0]out2; reg [1:0]out3; wire [2:0]out4; `p原创 2022-03-07 17:25:37 · 8642 阅读 · 0 评论