以下示例(<div class="wrapper">
<input type="button" value="ADD" onclick="append(1);">
</div>
<div class="templates" id="temp1">
<ul class="level1">
<li>
<input placeholder="parent">
<button onclick="append(2, this)">ADD</button>
<button onclick="remove_div(this)">DEL</button>
</li>
</ul>
</div>
<div class="templates" id="temp2">
<ul class="level2">
<li>
<input placeholder="child">
<button onclick="append(3, this)">ADD</button>
<button onclick="remove_div(this)">DEL</button>
</li>
</ul>
</div>
<div class="templates" id="temp3">
<ul class="level3">
<li>
<input placeholder="sub-child">
<button onclick="remove_div(this)">DEL</button>
</li>
</ul>
</div>
)中非阻塞分配的使用是否有效?它模拟很好但是如何合成?
state == 2'b01
答案 0 :(得分:2)
非阻塞分配(<=
)是建模顺序逻辑的合适方法。
您显示的代码表示:如果状态当前为01
,那么如果从addr
开始的64个内存位置中的任何一个等于a
,那么下一个状态为00
,否则为10
。
如果这是你想要的,代码是正确的。
答案 1 :(得分:1)
您的非阻止使用情况没问题,但您正在同时读取64个内存值 。
请参阅我的回答Here关于HDL和循环以及合成时循环会发生什么。
除非你有64个端口的内存,否则你不能这样做。您的工具可能会构建它,但它可能会使用32768个寄存器,而不是内存。如果该工具非常非常聪明,它可能会将您的设计分成64个记忆库,每个64个条目深度。
如果这是你需要的功能,我会自己将内存分成64个块并同时读取所有64个内存。
顺便说一句:如果你构建一个缓存,那就不是这样做的了。你通常会有一个TAG记忆。