Для того, чтобы данный файл компилился, надо сделать к нему простейшие варианты стека и трех ALU:


[code]	TITLE "Stack on LCELL";
	PARAMETERS (
        WIDTH = 16,
        DEPTH = 8
);
SUBDESIGN Stack (
	CLK	: input;
	DI[WIDTH-1..0] : input; 
	DO[WIDTH-1..0] : output;
	CMD[1..0]	: input;
)
VARIABLE
	REGS[DEPTH-1..0][WIDTH-1..0] : DFFE;
	CMDR[5..0]	: NODE;
BEGIN
	CASE CMD[] IS
		WHEN 0 => CMDR[] = B"000000"; -- NOP
		WHEN 1 => CMDR[] = B"111111"; -- PUSH
		WHEN 2 => CMDR[] = B"000111"; -- POP
		WHEN 3 => CMDR[] = B"000001"; -- SWAP_TOP
	END CASE;

	REGS[][].clk	= CLK;
	REGS[0][].ena	= CMDR0;
	REGS[1][].ena	= CMDR1;
	REGS[DEPTH-1..2][].ena	= CMDR2;
	DO[] = REGS[0][];

	IF CMDR3 THEN
		REGS[0][] = DI[];
	ELSE
		REGS[0][] = REGS[1][];
	END IF;
	
	IF CMDR4 THEN
		REGS[1][] = REGS[0][];
	ELSE
		REGS[1][] = REGS[2][];
	END IF;
	FOR i IN 2 TO DEPTH-2 GENERATE
	IF CMDR5 THEN
		REGS[i][] = REGS[i-1][];
	ELSE
		REGS[i][] = REGS[i+1][];
	END IF;
	END GENERATE;
	
	IF CMDR5 THEN
		REGS[DEPTH-1][] = REGS[DEPTH-2][];
	ELSE
		REGS[DEPTH-1][] = 0;
	END IF;
END;

[/code]

[code]
	TITLE "ALU DROP";

PARAMETERS (
	WIDTH=16
);

SUBDESIGN alu_5 (
	op1[WIDTH-1..0]	: input;
	op2[WIDTH-1..0]	: input;
	cmd[3..0]	: input;
	res[WIDTH-1..0]	: output;
)
VARIABLE
	logic[WIDTH-1..0]	: LCELL;
BEGIN
	logic[] = op2[];
	res[] = logic[];
END;


[/code]	
[code]TITLE "ALU SWAP";

PARAMETERS (
	WIDTH=16
);

SUBDESIGN alu_6 (
	op1[WIDTH-1..0]	: input;
	op2[WIDTH-1..0]	: input;
	cmd[3..0]	: input;
	res[WIDTH-1..0]	: output;
)
VARIABLE
	logic[WIDTH-1..0]	: LCELL;
BEGIN
	logic[] = op2[];
	res[] = logic[];
END;
[/code]

[code]
	TITLE "ALU DUP";

PARAMETERS (
	WIDTH=16
);

SUBDESIGN alu_7 (
	op1[WIDTH-1..0]	: input;
	op2[WIDTH-1..0]	: input;
	cmd[3..0]	: input;
	res[WIDTH-1..0]	: output;
)
VARIABLE
	logic[WIDTH-1..0]	: LCELL;
BEGIN
	logic[] = op2[];
	res[] = logic[];
END;

[/code]

И главный файл (с последними исправлениями):

[code]TITLE "FORTH-CPU version 7";

include "stack.inc";
include "alu_5.inc";
include "alu_6.inc";
include "alu_7.inc";

constant nop = 0;
constant drop = 2;
constant dup = 1;
constant swap = 3;

PARAMETERS (
        WIDTH = 16,
        DEPTH = 8
);
SUBDESIGN fcpu (
        CLK : input;  -- ясное дело - синхронизация!
        DI[WIDTH-1..0] : input; -- данные, считываемые из ОЗУ
        DO[WIDTH-1..0] : output; -- данные для запппписи в ОЗУ
        ADR[WIDTH-1..0] : output; -- адрес ОЗУ
        RD,WR,CS : output; -- управляющие сигналы ОЗУ
)
VARIABLE
    RCMD[WIDTH-1..0] : DFF;
    RStack : stack with(WIDTH=WIDTH,DEPTH=DEPTH);
    DStack : stack with(WIDTH=WIDTH,DEPTH=DEPTH);
    PC[WIDTH-1..0] : DFFE;
    TR[WIDTH-1..0] : DFFE;
    CMD[3..0] : NODE;
    PREF[3..0]: NODE;
    ALU5 : alu_5 with(WIDTH=WIDTH);
    ALU6 : alu_6 with(WIDTH=WIDTH);
    ALU7 : alu_7 with(WIDTH=WIDTH);
BEGIN

DEFAULTS
    RStack.cmd[] = GND; -- по умолчанию nop
    DStack.cmd[] = GND; -- по умолчанию nop
    PC[].ena = GND;  -- PC не меняется
    TR[].ena = GND;  -- TR не меняется
    RD	= VCC;
    WR	= VCC;
    CS	= VCC;
END DEFAULTS;

    RCMD[].clk = clk;
    RStack.clk = clk;
    DStack.clk = clk;
    PC[].clk = clk;
    TR[].clk = clk;
    ALU5.cmd[] = PREF[]; ALU5.op1[] = TR[]; ALU5.op2[] = DStack.do[];
    ALU6.cmd[] = PREF[]; ALU6.op1[] = TR[]; ALU6.op2[] = DStack.do[];
    ALU7.cmd[] = PREF[]; ALU7.op1[] = TR[]; ALU7.op2[] = DStack.do[];

CASE CMD[3..0] IS
    WHEN 0 => -- команда 0 NOP
        RCMD[] = DI[];
        PC[] = PC[] + 1; PC[].ena = VCC;
    WHEN 1 => -- команда 1
        RCMD[] = (B"0000",RCMD[WIDTH-1..4]);
        
    WHEN 2 => -- команда 2
        RCMD[] = (B"0000",RCMD[WIDTH-1..4]);
        
    WHEN 3 => -- команда 3
        RCMD[] = (B"0000",RCMD[WIDTH-1..4]);
        
    WHEN 4 => -- команда 4
        RCMD[] = (B"0000",RCMD[WIDTH-1..4]);
        
    WHEN 5 => -- команда 5
        RCMD[] = (B"0000",RCMD[WIDTH-1..4]);
		TR[] = ALU5.res[]; TR[].ena = VCC;
		DStack.di[] = TR[]; DStack.cmd[] = drop;
    WHEN 6 => -- команда 6
        RCMD[] = (B"0000",RCMD[WIDTH-1..4]);
		TR[] = ALU6.res[]; TR[].ena = VCC;
		DStack.di[] = TR[]; DStack.cmd[] = dup;
    WHEN 7 => -- команда 7
        RCMD[] = (B"0000",RCMD[WIDTH-1..4]);
		TR[] = ALU7.res[]; TR[].ena = VCC;
		DStack.di[] = TR[]; DStack.cmd[] = swap;
    WHEN 8,9,10,11,12,13,14,15 => -- остальные команды
        RCMD[] = (B"0000",RCMD[WIDTH-1..4]);
        
END CASE; 

CMD[] = RCMD[3..0];
	ADR[] = PC[];
	DO[] = TR[];

END;
[/code]

Вставляется все эти коды в соответствующие файлы, в Quartus-II
для стека и трех ALU сначала генерятся инклюд-файлы для AHDL (меню File -> Create/Update -> Create AHDL Include фор current file)
