diff --git a/sim/group.lua b/sim/group.lua index 96e5710..f9f363a 100644 --- a/sim/group.lua +++ b/sim/group.lua @@ -213,15 +213,17 @@ end -- Logic Critical function Group.update(net, tick) - local state = net.state_num[0]>0 and 1 or 0 - if state ~= net.state[0] then - net.state[0] = state - net.update_tick[0] = tick + local cnet = net.c + local state = cnet.state_num[0]>0 and 1 or 0 + if state ~= cnet.state[0] then + cnet.state[0] = state + cnet.update_tick[0] = tick - local len = net.num_gates_update[0]-1 + local len = cnet.num_gates_update[0]-1 for i = 0, len do - local gate = net.gates_update[i+1] - if gate.in_queue[0]==0 then + local cgate = cnet.gates_update_c[i] + if cgate.in_queue[0]==0 then + local gate = Simulation.gate_from_cgate(sim, cgate) Simulation.queuegate(GSim, gate) end end diff --git a/sim/simulation.lua b/sim/simulation.lua index ec53c7d..c6a8a70 100644 --- a/sim/simulation.lua +++ b/sim/simulation.lua @@ -415,10 +415,10 @@ function Simulation.remove_net(sim, net) sim.nets[net.id] = nil end -function Simulation.net_from_netc(sim, netc) - return sim.nets[netc.id] or error("no net for id "..netc.id) +function Simulation.net_from_cnet(sim, cnet) + return sim.nets[cnet.id] or error("no net for id "..cnet.id) end -function Simulation.gate_from_gatec(sim, gatec) - return sim.gates[gatec.objref] or error("no gate for objref "..gatec.objref) +function Simulation.gate_from_cgate(sim, cgate) + return sim.gates[cgate.objref] or error("no gate for objref "..cgate.objref) end