用于在时序电路aig和dfa之间移动的库。
py-aiger-dfa的Python项目详细描述
Py aiger DFA
用于在aig电路和dfa之间转换的python库。
目录
安装
如果您只需要使用aiger_dfa
,您可以运行:
$ pip install py-aiger-dfa
对于开发人员,请注意此项目使用 poetrypython包/依赖项 管理工具。请熟悉它,然后 运行:
$ poetry install
用法
使用这个库的主要入口点是dfa2aig
和
aig2dfa
函数。使用
dfa包装。熟悉
^假设有{py-aiger
和py-aiger-bv
包。
DFA至AIG
从DFA
转到AIG
对象的示例
如下所示。
fromdfaimportDFAfromaiger_dfaimportdfa2aigmy_dfa=DFA(start=0,inputs={0,1},label=lambdas:(s%4)==3,transition=lambdas,c:(s+c)%4,)my_aig,relabels=dfa2aig(my_dfa)
现在circ
是一个AIG
,而relabels
是来自输入的映射,
状态,并将my_dfa
输出到其1-hot编码的
my_aig
中的对应项。
relabels
具有以下架构:
relabels={'inputs':..,# Bidict from 1-hot index to dfa input.'outputs':..,# Bidict from 1-hot index to dfa output.'states':..,# Bidict from 1-hot index to dfa state.}
其中bidict
指https://bidict.readthedocs.io/en/master/。
AIG到DFA
与dfa2aig
相反的是aig2dfa
。用同样的例子。
fromaiger_dfaimportaig2dfamy_dfa2=aig2dfa(my_aig,relabels=relabels)assertmy_dfa2.label((1,0,0,1,1,0))==my_dfa.label((1,0,0,1,1,0))