} : Signal dom (BitVec 4) := circuit do let bin ← Signal.reg 0#4 let binSig := bin. 1 let shifted := (fun x => x >>> 1) <$> binSig bin <~ binSig + 1#4 return (binSig ^^^ shifted) #synthesizeVerilog grayCtr -- これだけで SV が出る • Signal dom α = ドメイン上の時系列 / circuit do = レジスタ DSL 7
let declName ← liftCoreM (resolveGlobalConstNoOverload id) liftTermElabM do let (module, _) ← synthesizeCombinational declName for w in DRC.checkRegisteredOutputs module do logWarning m! "{w}" let optimized := IR.Optimize.optimizeModule module IO.println (toVerilog optimized) • ユーザー定義コマンドが 10 ⾏ — 解決→合成→DRC→最適化→ 出⼒ 15
if (rst) result <= 1'b0; else result <= a ^ b; endmodule" theorem spec (s : State) (i : Input) : (nextState s i)._reg_result = (if i.rst = 0 then i.a ^^^ i.b else 0) := by simp [nextState]; bv_decide • 既存 SV 資産にあとから証明を貼れる 27