module tap_controller (tms, tck, trst, sel, enable, test_logic_reset, idle, resetn, shift_ir, update_ir, clock_ir, shift_dr, capture_dr, clock_dr, update_dr); input tms; input tck; input trst; output sel; output enable; output test_logic_reset; output idle; output resetn; output shift_ir; output update_ir; output clock_ir; output shift_dr; output capture_dr; output clock_dr; output update_dr; wire sel; reg enable; wire test_logic_reset; wire idle; reg resetn; reg shift_ir; wire update_ir; wire clock_ir; reg shift_dr; wire capture_dr; wire clock_dr; wire update_dr; reg D; reg C; reg B; reg A; wire NA; wire NB; wire NC; wire ND; wire GRST; wire GENB; wire GSIR; wire GSDR; wire tckd; wire trsthi; wire tmsbuf; wire trstnbuf; initial begin A = 'b 1; end initial begin B = 'b 1; end initial begin C = 'b 1; end initial begin D = 'b 1; end always @(posedge trsthi or posedge tckd) begin if (trsthi == 'b 1) resetn <= 'b 0; else if (tckd== 'b 1 ) resetn <=GRST; end always @(posedge trsthi or posedge tckd) begin if (trsthi== 'b 1) enable <='b 0; else if (tckd == 'b 1 ) enable <=GENB; end always @(posedge trsthi or posedge tckd) begin if (trsthi== 'b 1) shift_ir <='b 1; else if (tckd == 'b 1 ) shift_ir <=GSIR; end always @(posedge trsthi or posedge tckd) begin if (trsthi== 'b 1) shift_dr <='b 1; else if (tckd == 'b 1 ) shift_dr <=GSDR; end always @(posedge trsthi or posedge tck) begin if (trsthi== 'b 1) D <='b 1; else if (tck == 'b 1 ) D <=ND; end always @(posedge trsthi or posedge tck) begin if (trsthi== 'b 1) C <='b 1; else if (tck == 'b 1 ) C <=NC; end always @(posedge trsthi or posedge tck) begin if (trsthi== 'b 1) B <='b 1; else if (tck == 'b 1 ) B <=NB; end always @(posedge trsthi or posedge tck) begin if (trsthi== 'b 1) A <='b 1; else if (tck == 'b 1 ) A <=NA; end assign trsthi=~trstnbuf; assign sel=D; assign tckd=~tck; assign clock_ir=~(~A & B & D & tckd); assign update_ir=A & ~B & C & D & tckd; assign clock_dr=~(~A & B & ~D & tckd); assign test_logic_reset=A & B & C & D; assign idle=~A & ~B & C & D; assign update_dr=A & ~B & C & ~D & tckd; assign capture_dr=~A & B & C & ~D; assign tmsbuf=tms; assign trstnbuf=trst; assign NA=~(~(~tmsbuf & ~C & A) & ~(tmsbuf & ~B) & ~(tmsbuf & ~A) & ~(tmsbuf & C & D)); assign NB=~(~(~tmsbuf & B & ~A) & ~(~tmsbuf & ~C) & ~(~tmsbuf & ~D & B) & ~(~tmsbuf & ~D & ~A) & ~(tmsbuf & C & ~B) & ~(tmsbuf & D & C & A)); assign NC=~(~(C & ~B) & ~(C & A) & ~(tmsbuf & ~B)); assign ND=~(~(D & ~C) & ~(D & B) & ~(~tmsbuf & C & ~B) & ~(~D & C & ~B & ~A)); assign GRST=~(A & B & C & D); assign GSIR=~A & B & ~C & D; assign GSDR=~A & B & ~C & ~D; assign GENB=GSIR | GSDR; endmodule // module tap_controller [ [ [ 'module', 'tap_controller', '(', [ ['tms'], ['tck'], ['trst'], ['sel'], ['enable'], ['test_logic_reset'], ['idle'], ['resetn'], ['shift_ir'], ['update_ir'], ['clock_ir'], ['shift_dr'], ['capture_dr'], ['clock_dr'], ['update_dr']], ')', ';'], [ ['input', 'tms', ';'], ['input', 'tck', ';'], ['input', 'trst', ';'], ['output', 'sel', ';'], ['output', 'enable', ';'], ['output', 'test_logic_reset', ';'], ['output', 'idle', ';'], ['output', 'resetn', ';'], ['output', 'shift_ir', ';'], ['output', 'update_ir', ';'], ['output', 'clock_ir', ';'], ['output', 'shift_dr', ';'], ['output', 'capture_dr', ';'], ['output', 'clock_dr', ';'], ['output', 'update_dr', ';'], ['wire', ['sel'], ';'], ['reg', ['enable'], ';'], ['wire', ['test_logic_reset'], ';'], ['wire', ['idle'], ';'], ['reg', ['resetn'], ';'], ['reg', ['shift_ir'], ';'], ['wire', ['update_ir'], ';'], ['wire', ['clock_ir'], ';'], ['reg', ['shift_dr'], ';'], ['wire', ['capture_dr'], ';'], ['wire', ['clock_dr'], ';'], ['wire', ['update_dr'], ';'], ['reg', ['D'], ';'], ['reg', ['C'], ';'], ['reg', ['B'], ';'], ['reg', ['A'], ';'], ['wire', ['NA'], ';'], ['wire', ['NB'], ';'], ['wire', ['NC'], ';'], ['wire', ['ND'], ';'], ['wire', ['GRST'], ';'], ['wire', ['GENB'], ';'], ['wire', ['GSIR'], ';'], ['wire', ['GSDR'], ';'], ['wire', ['tckd'], ';'], ['wire', ['trsthi'], ';'], ['wire', ['tmsbuf'], ';'], ['wire', ['trstnbuf'], ';'], ['initial', ['begin', [[[['A'], '=', "'b 1"], ';']], 'end']], ['initial', ['begin', [[[['B'], '=', "'b 1"], ';']], 'end']], ['initial', ['begin', [[[['C'], '=', "'b 1"], ';']], 'end']], ['initial', ['begin', [[[['D'], '=', "'b 1"], ';']], 'end']], [ 'always', ['@', '(', ['posedge', ['trsthi'], 'posedge', ['tckd']], ')'], [ 'begin', [ [ 'if', ['(', ['trsthi'], '==', "'b 1", ')'], [[['resetn'], '<=', "'b 0"], ';'], 'else', [ 'if', ['(', ['tckd'], '==', "'b 1", ')'], [[['resetn'], '<=', ['GRST']], ';']]]], 'end']], [ 'always', ['@', '(', ['posedge', ['trsthi'], 'posedge', ['tckd']], ')'], [ 'begin', [ [ 'if', ['(', ['trsthi'], '==', "'b 1", ')'], [[['enable'], '<=', "'b 0"], ';'], 'else', [ 'if', ['(', ['tckd'], '==', "'b 1", ')'], [[['enable'], '<=', ['GENB']], ';']]]], 'end']], [ 'always', ['@', '(', ['posedge', ['trsthi'], 'posedge', ['tckd']], ')'], [ 'begin', [ [ 'if', ['(', ['trsthi'], '==', "'b 1", ')'], [[['shift_ir'], '<=', "'b 1"], ';'], 'else', [ 'if', ['(', ['tckd'], '==', "'b 1", ')'], [[['shift_ir'], '<=', ['GSIR']], ';']]]], 'end']], [ 'always', ['@', '(', ['posedge', ['trsthi'], 'posedge', ['tckd']], ')'], [ 'begin', [ [ 'if', ['(', ['trsthi'], '==', "'b 1", ')'], [[['shift_dr'], '<=', "'b 1"], ';'], 'else', [ 'if', ['(', ['tckd'], '==', "'b 1", ')'], [[['shift_dr'], '<=', ['GSDR']], ';']]]], 'end']], [ 'always', ['@', '(', ['posedge', ['trsthi'], 'posedge', ['tck']], ')'], [ 'begin', [ [ 'if', ['(', ['trsthi'], '==', "'b 1", ')'], [[['D'], '<=', "'b 1"], ';'], 'else', [ 'if', ['(', ['tck'], '==', "'b 1", ')'], [[['D'], '<=', ['ND']], ';']]]], 'end']], [ 'always', ['@', '(', ['posedge', ['trsthi'], 'posedge', ['tck']], ')'], [ 'begin', [ [ 'if', ['(', ['trsthi'], '==', "'b 1", ')'], [[['C'], '<=', "'b 1"], ';'], 'else', [ 'if', ['(', ['tck'], '==', "'b 1", ')'], [[['C'], '<=', ['NC']], ';']]]], 'end']], [ 'always', ['@', '(', ['posedge', ['trsthi'], 'posedge', ['tck']], ')'], [ 'begin', [ [ 'if', ['(', ['trsthi'], '==', "'b 1", ')'], [[['B'], '<=', "'b 1"], ';'], 'else', [ 'if', ['(', ['tck'], '==', "'b 1", ')'], [[['B'], '<=', ['NB']], ';']]]], 'end']], [ 'always', ['@', '(', ['posedge', ['trsthi'], 'posedge', ['tck']], ')'], [ 'begin', [ [ 'if', ['(', ['trsthi'], '==', "'b 1", ')'], [[['A'], '<=', "'b 1"], ';'], 'else', [ 'if', ['(', ['tck'], '==', "'b 1", ')'], [[['A'], '<=', ['NA']], ';']]]], 'end']], ['assign', [['trsthi'], '=', '~', ['trstnbuf']], ';'], ['assign', [['sel'], '=', ['D']], ';'], ['assign', [['tckd'], '=', '~', ['tck']], ';'], [ 'assign', [ ['clock_ir'], '=', '~', '(', ['~', ['A'], '&', ['B'], '&', ['D'], '&', ['tckd']], ')'], ';'], [ 'assign', [ ['update_ir'], '=', ['A'], '&', '~', ['B'], '&', ['C'], '&', ['D'], '&', ['tckd']], ';'], [ 'assign', [ ['clock_dr'], '=', '~', '(', ['~', ['A'], '&', ['B'], '&', '~', ['D'], '&', ['tckd']], ')'], ';'], [ 'assign', [['test_logic_reset'], '=', ['A'], '&', ['B'], '&', ['C'], '&', ['D']], ';'], [ 'assign', [['idle'], '=', '~', ['A'], '&', '~', ['B'], '&', ['C'], '&', ['D']], ';'], [ 'assign', [ ['update_dr'], '=', ['A'], '&', '~', ['B'], '&', ['C'], '&', '~', ['D'], '&', ['tckd']], ';'], [ 'assign', [ ['capture_dr'], '=', '~', ['A'], '&', ['B'], '&', ['C'], '&', '~', ['D']], ';'], ['assign', [['tmsbuf'], '=', ['tms']], ';'], ['assign', [['trstnbuf'], '=', ['trst']], ';'], [ 'assign', [ ['NA'], '=', '~', '(', [ '~', '(', ['~', ['tmsbuf'], '&', '~', ['C'], '&', ['A']], ')', '&', '~', '(', [['tmsbuf'], '&', '~', ['B']], ')', '&', '~', '(', [['tmsbuf'], '&', '~', ['A']], ')', '&', '~', '(', [['tmsbuf'], '&', ['C'], '&', ['D']], ')'], ')'], ';'], [ 'assign', [ ['NB'], '=', '~', '(', [ '~', '(', ['~', ['tmsbuf'], '&', ['B'], '&', '~', ['A']], ')', '&', '~', '(', ['~', ['tmsbuf'], '&', '~', ['C']], ')', '&', '~', '(', ['~', ['tmsbuf'], '&', '~', ['D'], '&', ['B']], ')', '&', '~', '(', ['~', ['tmsbuf'], '&', '~', ['D'], '&', '~', ['A']], ')', '&', '~', '(', [['tmsbuf'], '&', ['C'], '&', '~', ['B']], ')', '&', '~', '(', [['tmsbuf'], '&', ['D'], '&', ['C'], '&', ['A']], ')'], ')'], ';'], [ 'assign', [ ['NC'], '=', '~', '(', [ '~', '(', [['C'], '&', '~', ['B']], ')', '&', '~', '(', [['C'], '&', ['A']], ')', '&', '~', '(', [['tmsbuf'], '&', '~', ['B']], ')'], ')'], ';'], [ 'assign', [ ['ND'], '=', '~', '(', [ '~', '(', [['D'], '&', '~', ['C']], ')', '&', '~', '(', [['D'], '&', ['B']], ')', '&', '~', '(', ['~', ['tmsbuf'], '&', ['C'], '&', '~', ['B']], ')', '&', '~', '(', ['~', ['D'], '&', ['C'], '&', '~', ['B'], '&', '~', ['A']], ')'], ')'], ';'], [ 'assign', [ ['GRST'], '=', '~', '(', [['A'], '&', ['B'], '&', ['C'], '&', ['D']], ')'], ';'], [ 'assign', [['GSIR'], '=', '~', ['A'], '&', ['B'], '&', '~', ['C'], '&', ['D']], ';'], [ 'assign', [ ['GSDR'], '=', '~', ['A'], '&', ['B'], '&', '~', ['C'], '&', '~', ['D']], ';'], ['assign', [['GENB'], '=', ['GSIR'], '|', ['GSDR']], ';']], 'endmodule']]