Chisel错误总结与思考

版权声明:本文为博主原创文章,转载请附上源地址。 https://blog.csdn.net/Ema1997/article/details/80493792

1.Chisel是硬件语言,所以最好每个when都跟着.otherwise
2.寄存器中的数都是按照补码形式存的,所以在做tmp(63,32)这种截断取值时要格外注意,取出的是补码的相应位。
3.Test文件中每一个step对应一个cycle,step(1)代表着让电路向前运行一个时间单位。
4.peek(a)可以在test文件中取出a的值
5.线用:=连上后就连上了,是并行运行的,右端一改,左端立刻会变,不是顺序执行的,所以要注意。
6.所有的输出线都要有值,不能有地方是空的,不赋值的
7.模块中输出如果定义的是UInt,那么在测试的时候也要注意把期望的输出从Int变为UInt,具体函数:
Big_tot一定要是BigInt类型。

var Big_tot = BigInt(0)
Big_tot = intToUnsignedBigInt(tot) // 将有符号数转化为无符号数

8.在写状态机时,每个状态一定要想清楚再写代码。
9.在有状态机时,寄存器更新时机一定要注意,一定要写清楚。
10.寄存器的值只会在下一个step更新,Wire类型的值会实时更新。

猜你喜欢

转载自blog.csdn.net/Ema1997/article/details/80493792