The difference of two section codes?

Status
Not open for further replies.

clivechen

Member level 3
Joined
May 29, 2004
Messages
65
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,288
Activity points
500
Hi, everybody
I don't know the difference between the first section code and the second section code? Please give me some advices and hints. thank you!!
Thanks for any reply!
clive chen
the first section:
Code:
assign a_eq_b = (comp_a == comp_b);
assign a_lt_b = (comp_a < comp_b);
always @(comp_op or a_eq_b or a_lt_b) begin
	case(comp_op[2:0])	// synopsys parallel_case
		`OR1200_COP_SFEQ:
			flagcomp = a_eq_b;
		`OR1200_COP_SFNE:
			flagcomp = ~a_eq_b;
		`OR1200_COP_SFGT:
			flagcomp = ~(a_eq_b | a_lt_b);
		`OR1200_COP_SFGE:
			flagcomp = ~a_lt_b;
		`OR1200_COP_SFLT:
			flagcomp = a_lt_b;
		`OR1200_COP_SFLE:
			flagcomp = a_eq_b | a_lt_b;
		default:
			flagcomp = 1'b0;
	endcase
end

the second section:
Code:
wire	[width-1:0]		comp_a;
wire	[width-1:0]		comp_b;
always @(comp_op or comp_a or comp_b) begin
	case(comp_op[2:0])	// synopsys parallel_case
		`OR1200_COP_SFEQ:
			flagcomp = (comp_a == comp_b);
		`OR1200_COP_SFNE:
			flagcomp = (comp_a != comp_b);
		`OR1200_COP_SFGT:
			flagcomp = (comp_a > comp_b);
		`OR1200_COP_SFGE:
			flagcomp = (comp_a >= comp_b);
		`OR1200_COP_SFLT:
			flagcomp = (comp_a < comp_b);
		`OR1200_COP_SFLE:
			flagcomp = (comp_a <= comp_b);
		default:
			flagcomp = 1'b0;
	endcase
end
 

Its very simple!
The first section of code does resource sharing for == and < operations hence
generates less hardware!
Where as the second section of code no resorse sharing hence duplicate
hardware!

Hope this clarifies ur doubts!
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…