在初始条件之后,接下来是实际的APG指令。所有APG指令都以百分号(%)开头。百分号后面可以跟随多达8行。这些行或语句构成了单个APG指令。这些语句的顺序并不重要,但尽量在所有指令中使用相同的顺序。
labels必须遵循以下规则:
标签:
- 可以由大写字母、小写字母、数字和下划线字符组成,必须以字母开头(不能是数字或下划线)
- 不区分大小写(为了与pattern语言的其余部分保持一致)
- 总是以冒号(:)结尾
- 不能是保留字(在使用的测试编程语言中预定义的词)
- 在一个微指令处必须是唯一的(一个微指令处不允许有多个标签。)
- 当标签与模式指令一起使用时,它需要是紧跟在百分号(%)之后的第一个助记符,百分号表示指令的开始
// write all zeros to the dut
%write loop:
xalu xmain, xcare , con, increment, dxmain, oxmain
yalu ymain, xcare, cmeqmax, increment , dymain, oymain
datgen mainmain
chipscslpt, cs2f, cs3pt, cs4pt
pinfunctsetl, psl, vihhl
countcount 1, decr, aon
marcjmpnz,write loop
APG指令的每一条语句或代码行都用于编程APG的不同部分。记住,尽管一个指令中可以有8行代码,但它只是一个单一的指令。APG指令的每一行语句都有默认值。如果你想在你的指令中使用这些默认值,你可以省略那些语句。
下面是默认值:
% Label 1 :/ * Sample Microinstruction * /
xalu xcare, xcare, coff, hold, nodes t, oxmain
yalu xcare, xcare, coffe hold, nodes t, oymain
datgen holddr , holdyn, mainmain, eqfdis bckfdis , not inv
chips noclks
pinfunc tsetl, psl, vihhl
count nocount, nocount, aoff
mar inc, 0, noread, noint, rsttmr, errsrcl
udata 0
如果一个APG指令使用了默认值,那么这个指令可以被重写时会覆盖默认值,而这两个指令将执行完全相同的操作。这意味着,如果某些参数不需要更改,就可以省略它们,从而简化指令的编写。