verilog 设计中查找表实现问题
时间:10-02
整理:3721RD
点击:
请教大家一个问题,verilog写出来的reg [7:0] mem [255],然后把数据存进这里面,再assign dataout = mem[datain]; 这样实现的话用dc跑出来面积很大,有没有别的办法缩小使用面积呢?
PS:之前就只使用一次assign dataout = mem[datain]; 然后我就以为是这个mem在赋值的时候产生的面积比较大,因为要例化好多datain到mem里找到dataout,然后我就把这个模块单独拿出来了,这样就会公用这个mem,以为面积会变小,然而dc跑出来之后面积依然特别大,我就在猜测是不是assign dataout = mem[datain];这句话本身就会产生大量的逻辑。如果是的话要怎么才能减少面积呢?
PPS:也想到用ram来做,不过用ram的话一次只能有一个读写操作,所以就会例化好多ram,这样面积应该也不小。
PS:之前就只使用一次assign dataout = mem[datain]; 然后我就以为是这个mem在赋值的时候产生的面积比较大,因为要例化好多datain到mem里找到dataout,然后我就把这个模块单独拿出来了,这样就会公用这个mem,以为面积会变小,然而dc跑出来之后面积依然特别大,我就在猜测是不是assign dataout = mem[datain];这句话本身就会产生大量的逻辑。如果是的话要怎么才能减少面积呢?
PPS:也想到用ram来做,不过用ram的话一次只能有一个读写操作,所以就会例化好多ram,这样面积应该也不小。
拿 timing 去換 area, 或是 area 換 timing, 這要看 project 對 area 及 timing 的需求.
空間和時間的取捨,需designer 去拿捏.