mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-08 02:15:20 +00:00
Merge branch 'master' into btor-ng
This commit is contained in:
commit
388e7a7740
|
@ -170,6 +170,7 @@ YOSYS_NAMESPACE_END
|
|||
"endgenerate" { return TOK_ENDGENERATE; }
|
||||
"while" { return TOK_WHILE; }
|
||||
"repeat" { return TOK_REPEAT; }
|
||||
"automatic" { return TOK_AUTOMATIC; }
|
||||
|
||||
"unique" { SV_KEYWORD(TOK_UNIQUE); }
|
||||
"unique0" { SV_KEYWORD(TOK_UNIQUE); }
|
||||
|
|
|
@ -108,7 +108,7 @@ static void free_attr(std::map<std::string, AstNode*> *al)
|
|||
%token TOK_INPUT TOK_OUTPUT TOK_INOUT TOK_WIRE TOK_REG
|
||||
%token TOK_INTEGER TOK_SIGNED TOK_ASSIGN TOK_ALWAYS TOK_INITIAL
|
||||
%token TOK_BEGIN TOK_END TOK_IF TOK_ELSE TOK_FOR TOK_WHILE TOK_REPEAT
|
||||
%token TOK_DPI_FUNCTION TOK_POSEDGE TOK_NEGEDGE TOK_OR
|
||||
%token TOK_DPI_FUNCTION TOK_POSEDGE TOK_NEGEDGE TOK_OR TOK_AUTOMATIC
|
||||
%token TOK_CASE TOK_CASEX TOK_CASEZ TOK_ENDCASE TOK_DEFAULT
|
||||
%token TOK_FUNCTION TOK_ENDFUNCTION TOK_TASK TOK_ENDTASK
|
||||
%token TOK_GENERATE TOK_ENDGENERATE TOK_GENVAR TOK_REAL
|
||||
|
@ -524,35 +524,35 @@ task_func_decl:
|
|||
} opt_dpi_function_args ';' {
|
||||
current_function_or_task = NULL;
|
||||
} |
|
||||
attr TOK_TASK TOK_ID {
|
||||
attr TOK_TASK opt_automatic TOK_ID {
|
||||
current_function_or_task = new AstNode(AST_TASK);
|
||||
current_function_or_task->str = *$3;
|
||||
current_function_or_task->str = *$4;
|
||||
append_attr(current_function_or_task, $1);
|
||||
ast_stack.back()->children.push_back(current_function_or_task);
|
||||
ast_stack.push_back(current_function_or_task);
|
||||
current_function_or_task_port_id = 1;
|
||||
delete $3;
|
||||
delete $4;
|
||||
} task_func_args_opt ';' task_func_body TOK_ENDTASK {
|
||||
current_function_or_task = NULL;
|
||||
ast_stack.pop_back();
|
||||
} |
|
||||
attr TOK_FUNCTION opt_signed range_or_signed_int TOK_ID {
|
||||
attr TOK_FUNCTION opt_automatic opt_signed range_or_signed_int TOK_ID {
|
||||
current_function_or_task = new AstNode(AST_FUNCTION);
|
||||
current_function_or_task->str = *$5;
|
||||
current_function_or_task->str = *$6;
|
||||
append_attr(current_function_or_task, $1);
|
||||
ast_stack.back()->children.push_back(current_function_or_task);
|
||||
ast_stack.push_back(current_function_or_task);
|
||||
AstNode *outreg = new AstNode(AST_WIRE);
|
||||
outreg->str = *$5;
|
||||
outreg->is_signed = $3;
|
||||
if ($4 != NULL) {
|
||||
outreg->children.push_back($4);
|
||||
outreg->is_signed = $3 || $4->is_signed;
|
||||
$4->is_signed = false;
|
||||
outreg->str = *$6;
|
||||
outreg->is_signed = $4;
|
||||
if ($5 != NULL) {
|
||||
outreg->children.push_back($5);
|
||||
outreg->is_signed = $4 || $5->is_signed;
|
||||
$5->is_signed = false;
|
||||
}
|
||||
current_function_or_task->children.push_back(outreg);
|
||||
current_function_or_task_port_id = 1;
|
||||
delete $5;
|
||||
delete $6;
|
||||
} task_func_args_opt ';' task_func_body TOK_ENDFUNCTION {
|
||||
current_function_or_task = NULL;
|
||||
ast_stack.pop_back();
|
||||
|
@ -579,6 +579,10 @@ dpi_function_args:
|
|||
dpi_function_arg |
|
||||
/* empty */;
|
||||
|
||||
opt_automatic:
|
||||
TOK_AUTOMATIC |
|
||||
/* empty */;
|
||||
|
||||
opt_signed:
|
||||
TOK_SIGNED {
|
||||
$$ = true;
|
||||
|
|
|
@ -881,3 +881,106 @@ module SB_WARMBOOT (
|
|||
input S0
|
||||
);
|
||||
endmodule
|
||||
|
||||
// UltraPlus feature cells
|
||||
(* blackbox *)
|
||||
module SB_MAC16 (
|
||||
input CLK,
|
||||
input CE,
|
||||
input [15:0] C,
|
||||
input [15:0] A,
|
||||
input [15:0] B,
|
||||
input [15:0] D,
|
||||
input AHOLD,
|
||||
input BHOLD,
|
||||
input CHOLD,
|
||||
input DHOLD,
|
||||
input IRSTTOP,
|
||||
input IRSTBOT,
|
||||
input ORSTTOP,
|
||||
input ORSTBOT,
|
||||
input OLOADTOP,
|
||||
input OLOADBOT,
|
||||
input ADDSUBTOP,
|
||||
input ADDSUBBOT,
|
||||
input OHOLDTOP,
|
||||
input OHOLDBOT,
|
||||
input CI,
|
||||
input ACCUMCI,
|
||||
input SIGNEXTIN,
|
||||
output [31:0] O,
|
||||
output CO,
|
||||
output ACCUMCO,
|
||||
output SIGNEXTOUT
|
||||
);
|
||||
parameter NEG_TRIGGER = 1'b0;
|
||||
parameter C_REG = 1'b0;
|
||||
parameter A_REG = 1'b0;
|
||||
parameter B_REG = 1'b0;
|
||||
parameter D_REG = 1'b0;
|
||||
parameter TOP_8x8_MULT_REG = 1'b0;
|
||||
parameter BOT_8x8_MULT_REG = 1'b0;
|
||||
parameter PIPELINE_16x16_MULT_REG1 = 1'b0;
|
||||
parameter PIPELINE_16x16_MULT_REG2 = 1'b0;
|
||||
parameter TOPOUTPUT_SELECT = 2'b00;
|
||||
parameter TOPADDSUB_LOWERINPUT = 2'b00;
|
||||
parameter TOPADDSUB_UPPERINPUT = 1'b0;
|
||||
parameter TOPADDSUB_CARRYSELECT = 2'b00;
|
||||
parameter BOTOUTPUT_SELECT = 2'b00;
|
||||
parameter BOTADDSUB_LOWERINPUT = 2'b00;
|
||||
parameter BOTADDSUB_UPPERINPUT = 1'b0;
|
||||
parameter BOTADDSUB_CARRYSELECT = 2'b00;
|
||||
parameter MODE_8x8 = 1'b0;
|
||||
parameter A_SIGNED = 1'b0;
|
||||
parameter B_SIGNED = 1'b0;
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module SB_SPRAM256KA(
|
||||
input [13:0] ADDRESS,
|
||||
input [15:0] DATAIN,
|
||||
input [3:0] MASKWREN,
|
||||
input WREN,
|
||||
input CHIPSELECT,
|
||||
input CLOCK,
|
||||
input STANDBY,
|
||||
input SLEEP,
|
||||
input POWEROFF,
|
||||
output [15:0] DATAOUT
|
||||
);
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module SB_HFOSC(
|
||||
input CLKHFPU,
|
||||
input CLKHFEN,
|
||||
output CLKHF
|
||||
);
|
||||
parameter CLKHF_DIV = "0b00";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module SB_LFOSC(
|
||||
input CLKLFPU,
|
||||
input CLKLFEN,
|
||||
output CLKLF
|
||||
);
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module SB_RGBA_DRV(
|
||||
input CURREN,
|
||||
input RGBLEDEN,
|
||||
input RGB0PWM,
|
||||
input RGB1PWM,
|
||||
input RGB2PWM,
|
||||
output RGB0,
|
||||
output RGB1,
|
||||
output RGB2
|
||||
);
|
||||
parameter CURRENT_MODE = "0b0";
|
||||
parameter RGB0_CURRENT = "0b000000";
|
||||
parameter RGB1_CURRENT = "0b000000";
|
||||
parameter RGB2_CURRENT = "0b000000";
|
||||
endmodule
|
||||
|
||||
|
|
Loading…
Reference in a new issue