; Map file

; Maps that control Enabling/Disabling
; of the functional blocks
{
NODE:F1   ARG:F1:0  COST:F1  FBLOCK_MP:F1
Disabled1 F1_VOID   0        OFF
Enabled1  MUXF1     10       F1_
}
{
NODE:F2   ARG:F2:0  COST:F2  FBLOCK_MP:F2
Disabled2 F2_VOID   0        OFF
Enabled2  MUXF2     10       F2_
}
{
NODE:F3   ARG:F3:0  COST:F3  FBLOCK_MP:F3
Disabled1 F3_VOID   0        OFF
Enabled1  MUXF3     10       F3_
}
{
NODE:F4   ARG:F4:0  COST:F4  FBLOCK_MP:F4
Disabled2 F4_VOID   0        OFF
Enabled2  MUXF4     10       F4_
}

; Maps that control setting
; of the condition nodes

; Condition - C1
{
NODE:cc1 NULL:
cc1 0
}
{
NODE:c1reg1 ARG:C1:0
creg1 REG1
creg2 REG2
creg3 REG3
creg4 REG4
creg5 REG5
creg6 REG6
creg7 REG7
}
{
NODE:c1bit1 ARGRANGE:C1:0
cbit0 <0:0>
cbit1 <1:1>
cbit2 <2:2>
cbit3 <3:3>
}
{
NODE:c1eq FUNC:C1
ceq  EQ
cneq NEQ
}
{
NODE:c1reg2 ARG:C1:1
creg1 REG1
creg2 REG2
creg3 REG3
creg4 REG4
creg5 REG5
creg6 REG6
creg7 REG7
}
{
NODE:c1bit2 ARGRANGE:C1:1
cbit0 <0:0>
cbit1 <1:1>
cbit2 <2:2>
cbit3 <3:3>
}

; Condition - C2
{
NODE:cc2 NULL:
cc2 0
}
{
NODE:c2reg1 ARG:C2:0
creg1 REG1
creg2 REG2
creg3 REG3
creg4 REG4
creg5 REG5
creg6 REG6
creg7 REG7
}
{
NODE:c2bit1 ARGRANGE:C2:0
cbit0 <0:0>
cbit1 <1:1>
cbit2 <2:2>
cbit3 <3:3>
}
{
NODE:c2eq FUNC:C2
ceq  EQ
cneq NEQ
}
{
NODE:c2reg2 ARG:C2:1
creg1 REG1
creg2 REG2
creg3 REG3
creg4 REG4
creg5 REG5
creg6 REG6
creg7 REG7
}
{
NODE:c2bit2 ARGRANGE:C2:1
cbit0 <0:0>
cbit1 <1:1>
cbit2 <2:2>
cbit3 <3:3>
}

; Condition - C3
{
NODE:cc3 NULL:
cc3 0
}
{
NODE:c3reg1 ARG:C3:0
creg1 REG1
creg2 REG2
creg3 REG3
creg4 REG4
creg5 REG5
creg6 REG6
creg7 REG7
}
{
NODE:c3bit1 ARGRANGE:C3:0
cbit0 <0:0>
cbit1 <1:1>
cbit2 <2:2>
cbit3 <3:3>
}
{
NODE:c3eq FUNC:C3
ceq  EQ
cneq NEQ
}

; Condition - C4
{
NODE:cc4 NULL:
cc4 0
}
{
NODE:c4reg1 ARG:C4:0
creg1 REG1
creg2 REG2
creg3 REG3
creg4 REG4
creg5 REG5
creg6 REG6
creg7 REG7
}
{
NODE:c4bit1 ARGRANGE:C4:0
cbit0 <0:0>
cbit1 <1:1>
cbit2 <2:2>
cbit3 <3:3>
}
{
NODE:c4eq FUNC:C4
ceq  EQ
cneq NEQ
}

; Condition - C5
{
NODE:cc5 NULL:
cc5 0
}
{
NODE:c5reg1 ARG:C5:0
creg1 REG1
creg2 REG2
creg3 REG3
creg4 REG4
creg5 REG5
creg6 REG6
creg7 REG7
}
{
NODE:c5eq FUNC:C5
ceq  EQ
cneq NEQ
}

; Condition - C6
{
NODE:cc6 NULL:
cc6 0
}
{
NODE:c6reg1 ARG:C6:0
creg1 REG1
creg2 REG2
creg3 REG3
creg4 REG4
creg5 REG5
creg6 REG6
creg7 REG7
}
{
NODE:c6eq FUNC:C6
ceq  EQ
cneq NEQ
}

; Condition - C7
{
NODE:cc7 NULL:
cc7 0
}
{
NODE:c7reg1 ARG:C7:0
creg1 REG1
creg2 REG2
creg3 REG3
creg4 REG4
creg5 REG5
creg6 REG6
creg7 REG7
}
{
NODE:c7eq FUNC:C7
ceq  EQ
cneq NEQ
}
{
NODE:c7reg2 ARG:C7:1
creg1 REG1
creg2 REG2
creg3 REG3
creg4 REG4
creg5 REG5
creg6 REG6
creg7 REG7
}

;{
;CONST:VOID FUNC:C8
;}


; Maps that control
; watch nodes

; I/O
{
VAR:OUT	NODEVALUE:wdataout
}
{
VAR:IN	NODEVALUE:wdatain
}

; Function results
{
VAR:F1	NODEVALUE:wf1out
}
{
VAR:F2  NODEVALUE:wf2out
}
{
VAR:F3  NODEVALUE:wf3out
}
{
VAR:F4  NODEVALUE:wf4out
}

; Function inputs
{
VAR:MUX1  NODEVALUE:wf1in
}
{
VAR:MUX2  NODEVALUE:wf2in
}
{
VAR:MUX41 NODEVALUE:wf4in1
}
{
VAR:MUX42 NODEVALUE:wf4in2
}

; Registers
{
VAR:REG1 NODEVALUE:wr1
}
{
VAR:REG2 NODEVALUE:wr2
}
{
VAR:REG3 NODEVALUE:wr3
}
{
VAR:REG4 NODEVALUE:wr4
}
{
VAR:REG5 NODEVALUE:wr5
}
{
VAR:REG6 NODEVALUE:wr6
}
{
VAR:REG7 NODEVALUE:wr7
}

; Conditions
{
VAR:C1 NODEVALUE:c1w NODEVALUE:wc1
}
{
VAR:C2 NODEVALUE:c2w NODEVALUE:wc2
}
{
VAR:C3 NODEVALUE:c3w NODEVALUE:wc3
}
{
VAR:C4 NODEVALUE:c4w NODEVALUE:wc4
}
{
VAR:C5 NODEVALUE:c5w NODEVALUE:wc5
}
{
VAR:C6 NODEVALUE:c6w NODEVALUE:wc6
}
{
VAR:C7 NODEVALUE:c7w NODEVALUE:wc7
}
{
VAR:C8 NODEVALUE:c8w NODEVALUE:wc8
}


; Function blocks functions
{
COUT:MUXF1_3:MUXF1_2:MUXF1_1:MUXF1_0 NODE:F1w
0000 None
0010 INV
0011 NEG
0100 SHL0
0101 SHL1
0110 SHR0
0111 SHR1
1000 CSHL
1001 CSHR
1010 INC
1011 DEC
}
{
COUT:MUXF2_3:MUXF2_2:MUXF2_1:MUXF2_0 NODE:F2w
0000 None
0010 AND
0011 NAND
0100 OR
0101 NOR
0110 XOR
1000 EQ
1100 ADD
}
{
COUT:MUXF3_3:MUXF3_2:MUXF3_1:MUXF3_0 NODE:F3w
0000 None
0010 INV
0011 NEG
0100 SHL0
0101 SHL1
0110 SHR0
0111 SHR1
1000 CSHL
1001 CSHR
1010 INC
1011 DEC
}
{
COUT:MUXF4_4:MUXF4_3:MUXF4_2:MUXF4_1:MUXF4_0 NODE:F4w
00000 None
00010 INV
00011 NEG
00100 SHL0
00101 SHL1
00110 SHR0
00111 SHR1
01000 CSHL
01001 CSHR
01010 INC
01011 DEC
; binary
10010 AND
10011 NAND
10100 OR
10101 NOR
10110 XOR
11000 EQ
11100 ADD
}

; Observers (in Functional BIST)
{
NODE:obsf1in 	OBSERVER:MUX1
obson		ON
obsoff		OFF
}
{
NODE:obsf1out 	OBSERVER:F1
obson		ON
obsoff		OFF
}
{
NODE:obsf2in 	OBSERVER:MUX2
obson		ON
obsoff		OFF
}
{
NODE:obsf2out	OBSERVER:F2
obson		ON
obsoff		OFF
}
{
NODE:obsf3out	OBSERVER:F3
obson		ON
obsoff		OFF
}
{
NODE:obsf4in1	OBSERVER:MUX41
obson		ON
obsoff		OFF
}
{
NODE:obsf4in2	OBSERVER:MUX42
obson		ON
obsoff		OFF
}
{
NODE:obsf4out	OBSERVER:F4
obson		ON
obsoff		OFF
}
; Registers observers
{
NODE:obsreg1	OBSERVER:REG1
obson		ON
obsoff		OFF
}
{
NODE:obsreg2	OBSERVER:REG2
obson		ON
obsoff		OFF
}
{
NODE:obsreg3	OBSERVER:REG3
obson		ON
obsoff		OFF
}
{
NODE:obsreg4	OBSERVER:REG4
obson		ON
obsoff		OFF
}
{
NODE:obsreg5	OBSERVER:REG5
obson		ON
obsoff		OFF
}
{
NODE:obsreg6	OBSERVER:REG6
obson		ON
obsoff		OFF
}
{
NODE:obsreg7	OBSERVER:REG7
obson		ON
obsoff		OFF
}

; LFSRs
{
NODE:lfsr1	LFSR:REG1
}
{
NODE:lfsr2	LFSR:REG2
}
{
NODE:lfsr3	LFSR:REG3
}
{
NODE:lfsr4	LFSR:REG4
}
{
NODE:lfsr5	LFSR:REG5
}
{
NODE:lfsr6	LFSR:REG6
}
{
NODE:lfsr7	LFSR:REG7
}
