Clip tests all passing

This commit is contained in:
jaseg 2021-06-17 13:41:10 +02:00
parent 4cf0ea0067
commit d71095a2a6
5 changed files with 465 additions and 447 deletions

View file

@ -42,7 +42,7 @@
<Option Name="IPUserFilesDir" Val="$PIPUSERFILESDIR"/>
<Option Name="IPStaticSourceDir" Val="$PIPUSERFILESDIR/ipstatic"/>
<Option Name="EnableBDX" Val="FALSE"/>
<Option Name="WTXSimLaunchSim" Val="119"/>
<Option Name="WTXSimLaunchSim" Val="185"/>
<Option Name="WTModelSimLaunchSim" Val="0"/>
<Option Name="WTQuestaLaunchSim" Val="0"/>
<Option Name="WTIesLaunchSim" Val="0"/>

View file

@ -21,220 +21,262 @@
module window_matcher(
input clk,
input rst,
/* Pixel clock and synchronous, active-high reset */
input clk, rst,
input in_blank,
input in_hsync,
input in_vsync,
input [7:0] in_red,
input [7:0] in_green,
input [7:0] in_blue,
/* Input pixel bus */
input in_blank, in_hsync, in_vsync,
input [7:0] in_red, [7:0] in_green, [7:0] in_blue,
output win_hsync,
output win_vsync,
output win_blank,
/* Output pixel bus */
output out_blank,
output out_hsync, out_vsync,
output [7:0] out_red, [7:0] out_green, [7:0] out_blue,
/* Overlay data IO */
output win_hsync, win_vsync,
output win_blank,
output reg [11:0] win_w,
output reg [11:0] win_h,
output reg win_locked,
input [7:0] win_red, [7:0] win_green, [7:0] win_blue,
output reg out_data_en,
/* Extracted data output */
output out_data_en,
output reg out_data_valid,
output reg [23:0] out_data,
output reg pattern_locked,
output reg [11:0] pattern_w,
output reg [11:0] pattern_h
output [23:0] out_data
);
assign out_blank = ~out_hsync;
assign win_blank = ~win_hsync;
wire [23:0] in_pxd = {in_red, in_green, in_blue};
wire [23:0] win_pxd = {win_red, win_green, win_blue};
wire [23:0] out_pxd;
assign {out_red, out_green, out_blue} = out_pxd;
reg [11:0] cur_x;
reg [11:0] cur_y;
reg [11:0] cur_x_sr [3:0];
reg [11:0] marker_x;
reg [11:0] marker_y;
/* rx_x trails by 4 px in the first window row, since we cannot start counting before the marker was fully detected */
reg [11:0] rx_x;
reg [11:0] rx_y;
wire [23:0] in_pxd = {in_red, in_green, in_blue};
reg [11:0] in_pxd_match_sr;
wire [3:0] in_pxd_match;
reg last_hsync;
reg last_vsync;
wire in_pxd_pattern_match;
reg pattern_found;
reg pattern_rx;
wire pattern_meta_rx;
wire pattern_data_rx;
wire [11:0] end_x;
wire [11:0] end_y;
reg win_hsync_int;
reg win_vsync_int;
reg [23:0] pattern_meta [3:0];
localparam [23:0] PATTERN_0 = 24'h012345;
localparam [23:0] PATTERN_1 = 24'h6789ab;
localparam [23:0] PATTERN_2 = 24'hcdef42;
localparam [23:0] PATTERN_3 = 24'h543210;
localparam [23:0] MARKER_0 = 24'h012345;
localparam [23:0] MARKER_1 = 24'h6789ab;
localparam [23:0] MARKER_2 = 24'hcdef42;
localparam [23:0] MARKER_3 = 24'h543210;
assign in_pxd_match = {
in_pxd == PATTERN_3,
in_pxd == PATTERN_2,
in_pxd == PATTERN_1,
in_pxd == PATTERN_0
wire [3:0] in_pxd_match = {
in_pxd == MARKER_3,
in_pxd == MARKER_2,
in_pxd == MARKER_1,
in_pxd == MARKER_0
};
assign in_pxd_pattern_match =
in_pxd_match_sr[2+0*4] == 1'b1
&& in_pxd_match_sr[1+1*4] == 1'b1
&& in_pxd_match_sr[0+2*4] == 1'b1
&& in_pxd_match[3] == 1'b1
&& in_blank == 1'b0;
assign pattern_meta_rx = pattern_rx && rx_x < 4 && rx_y == 0;
assign pattern_data_rx = pattern_rx && !pattern_meta_rx;
assign end_x = marker_x + pattern_meta[2];
assign end_y = marker_y + pattern_meta[3];
assign win_hsync = win_hsync_int && last_hsync && pattern_locked;
assign win_vsync = win_vsync_int && last_hsync && pattern_locked;
assign win_blank = !win_hsync;
reg [3:0] in_pxd_match_sr [2:0];
wire in_pxd_pattern_match =
in_pxd_match[3] == 1
&& in_pxd_match_sr[2][0] == 1
&& in_pxd_match_sr[1][1] == 1
&& in_pxd_match_sr[0][2] == 1
&& in_blank == 0;
/* Window matching shift register */
always @(posedge clk) begin
if (rst) begin
out_data <= 0;
out_data_valid <= 0;
out_data_en <= 0;
win_hsync_int <= 0;
win_vsync_int <= 0;
cur_x = 0;
cur_y = 0;
cur_x_sr[0] <= 0;
cur_x_sr[1] <= 0;
cur_x_sr[2] <= 0;
cur_x_sr[3] <= 0;
marker_x <= 0;
marker_y <= 0;
pattern_w <= 0;
pattern_h <= 0;
rx_x <= 0;
rx_y <= 0;
last_hsync <= 0;
last_vsync <= 0;
in_pxd_match_sr <= 0;
pattern_found <= 0;
pattern_locked <= 0;
pattern_rx <= 0;
pattern_meta[0] <= 0;
pattern_meta[1] <= 0;
pattern_meta[2] <= 0;
pattern_meta[3] <= 0;
if (rst == 1) begin
in_pxd_match_sr[0] <= 0;
in_pxd_match_sr[1] <= 0;
in_pxd_match_sr[2] <= 0;
end else begin
/* TODO add occlusion handling */
last_hsync <= in_hsync;
last_vsync <= in_vsync;
if (last_vsync == 1'b1 && in_vsync == 1'b0) begin
cur_y <= 0;
rx_y <= 0;
out_data_en <= 0;
rx_x <= 0;
rx_y <= 0;
pattern_rx <= 0;
win_vsync_int <= 0;
if (!pattern_found) begin
pattern_locked <= 0;
pattern_w = 0;
pattern_h = 0;
marker_x <= 0;
marker_y <= 0;
pattern_meta[0] <= 0;
pattern_meta[1] <= 0;
pattern_meta[2] <= 0;
pattern_meta[3] <= 0;
end else begin
pattern_locked <= 1;
pattern_w = pattern_meta[2];
pattern_h = pattern_meta[3];
end
pattern_found <= 0;
end
out_data_valid <= 0;
if (in_blank == 1'b0) begin
cur_x <= cur_x + 1;
cur_x_sr[0] <= cur_x;
cur_x_sr[1] <= cur_x_sr[0];
cur_x_sr[2] <= cur_x_sr[1];
cur_x_sr[3] <= cur_x_sr[2];
in_pxd_match_sr <= { in_pxd_match_sr[7:0], in_pxd_match };
if (in_pxd_pattern_match && !pattern_found) begin
pattern_rx <= 1'b1;
pattern_found <= 1'b1;
win_hsync_int <= 1;
marker_x <= cur_x_sr[3];
marker_y <= cur_y;
end
if (pattern_rx) begin
rx_x <= rx_x+1;
if (pattern_meta_rx) begin
case (rx_x)
0: pattern_meta[0] = in_pxd;
1: pattern_meta[1] = in_pxd;
2: pattern_meta[2] = in_pxd;
3: pattern_meta[3] = in_pxd;
endcase
end
if (pattern_data_rx && win_hsync_int && last_hsync) begin
out_data <= in_pxd;
out_data_valid <= 1'b1;
out_data_en <= 1'b1;
end
end
end
if (cur_x == marker_x && win_vsync_int) begin
win_hsync_int <= 1;
end
if (cur_x == end_x) begin
win_hsync_int <= 0;
end
if (cur_y == marker_y) begin
win_vsync_int <= 1;
end
if (cur_y == end_y) begin
win_vsync_int <= 0;
end
if (last_hsync == 1'b1 && in_hsync == 1'b0) begin
cur_x <= 0;
cur_x_sr[0] <= 0;
cur_x_sr[1] <= 0;
cur_x_sr[2] <= 0;
cur_x_sr[3] <= 0;
cur_y <= cur_y + 1;
in_pxd_match_sr <= 0;
win_hsync_int <= 0;
rx_x <= 0;
if (pattern_rx == 1'b1) begin
rx_y <= rx_y+1;
end
end
in_pxd_match_sr[0] <= in_pxd_match;
in_pxd_match_sr[1] <= in_pxd_match_sr[0];
in_pxd_match_sr[2] <= in_pxd_match_sr[1];
end
end
/* Window matching state machine */
reg [11:0] scan_x;
reg [11:0] scan_y;
reg [11:0] window_x;
reg [11:0] window_y;
reg [11:0] win_w_int;
reg [11:0] win_h_int;
reg win_hsync_int, win_vsync_int;
localparam ST_MAT_WAITING = 6'b000000,
ST_MAT_RX0 = 6'b000001,
ST_MAT_RX1 = 6'b000010,
ST_MAT_RX2 = 6'b000100,
ST_MAT_RX3 = 6'b001000,
ST_MAT_MATCHED = 6'b010000,
ST_MAT_DATA = 6'b100000;
reg [5:0] matcher_state;
wire matched = matcher_state[5];
always @(posedge clk) begin
if (rst == 1 || in_vsync == 0) begin
matcher_state <= ST_MAT_WAITING;
window_x <= 0;
window_y <= 0;
win_w_int <= 0;
win_h_int <= 0;
end else begin
case (matcher_state)
ST_MAT_WAITING: begin
if (in_pxd_pattern_match) begin
matcher_state <= ST_MAT_RX0;
window_x <= scan_x_reg[2];
window_y <= scan_y;
end
end
ST_MAT_RX0: begin
matcher_state <= ST_MAT_RX1;
end
ST_MAT_RX1: begin
matcher_state <= ST_MAT_RX2;
end
ST_MAT_RX2: begin
matcher_state <= ST_MAT_RX3;
win_w_int <= in_pxd;
end
ST_MAT_RX3: begin
matcher_state <= ST_MAT_MATCHED;
win_h_int <= in_pxd;
end
ST_MAT_MATCHED: begin
matcher_state <= ST_MAT_DATA;
win_hsync_int <= 1;
out_data_valid <= 1;
win_vsync_int <= 1;
win_hsync_ctr <= 9;
win_vsync_ctr <= 0;
end
endcase
end
end
/* Pixel scan state machine */
reg [11:0] scan_x_reg [3:0];
reg in_hsync_reg;
reg in_vsync_reg;
reg [23:0] in_pxd_reg;
assign out_hsync = in_hsync_reg;
assign out_vsync = in_vsync_reg;
always @(posedge clk) begin
if (rst == 1) begin
scan_x <= 0;
scan_x_reg[0] <= 0;
scan_x_reg[1] <= 0;
scan_x_reg[2] <= 0;
scan_x_reg[3] <= 0;
scan_y <= 0;
in_hsync_reg <= 0;
in_vsync_reg <= 0;
in_pxd_reg <= 0;
end else begin
in_hsync_reg <= in_hsync;
in_vsync_reg <= in_vsync;
in_pxd_reg <= in_pxd;
scan_x_reg[0] <= scan_x;
scan_x_reg[1] <= scan_x_reg[0];
scan_x_reg[2] <= scan_x_reg[1];
scan_x_reg[3] <= scan_x_reg[2];
if (in_hsync == 1) begin
scan_x <= scan_x + 1;
end
if (in_hsync_reg == 1 && in_hsync == 0) begin
scan_y <= scan_y + 1;
end
if (in_hsync_reg == 0 && in_hsync == 1) begin
scan_x_reg[0] <= 0;
scan_x_reg[1] <= 0;
scan_x_reg[2] <= 0;
scan_x_reg[3] <= 0;
scan_x <= 0;
end
if (in_vsync_reg == 1 && in_vsync == 0) begin
scan_y <= 0;
end
end
end
/* Match locking process */
reg match_locked; /* Goes high after a frame with a marker has been fully received */
always @(posedge clk) begin
if (rst) begin
match_locked <= 0;
end else begin
if (in_vsync_reg == 1 && in_vsync == 0) begin
match_locked <= matched;
win_locked <= matched;
win_w <= win_w_int;
win_h <= win_h_int;
end
end
end
/* Window sync generator */
reg [11:0] win_hsync_ctr;
reg [11:0] win_vsync_ctr;
assign win_hsync = win_hsync_int && match_locked;
assign win_vsync = win_vsync_int && match_locked;
always @(posedge clk) begin
if (rst == 1) begin
win_hsync_int <= 0;
win_vsync_int <= 0;
win_hsync_ctr <= 0;
win_vsync_ctr <= 0;
out_data_valid <= 0;
end else begin
if (matcher_state == ST_MAT_DATA) begin
/* hsync */
if (scan_x == window_x && win_vsync_int == 1) begin
win_hsync_int <= 1;
win_hsync_ctr <= 1;
out_data_valid <= 1;
end
if (win_hsync_int == 1) begin
win_hsync_ctr <= win_hsync_ctr + 1;
end
if (win_hsync_ctr == win_w_int) begin
win_hsync_int <= 0;
out_data_valid <= 0;
win_hsync_ctr <= 0;
end
if (in_hsync_reg == 1 && in_hsync == 0) begin
if (scan_y == window_y) begin
win_vsync_int <= 1;
win_vsync_ctr <= 0;
end
win_vsync_ctr <= win_vsync_ctr + 1;
end
if (win_vsync_ctr == win_h_int) begin
win_vsync_int <= 0;
end
if (in_vsync_reg == 1 && in_vsync == 0) begin
win_vsync_ctr <= 0;
end
end
end
end
/* Payload extractor */
reg [23:0] in_pxd_last;
always @(posedge clk) in_pxd_last <= rst ? 0 : in_pxd;
assign out_data_en = (matcher_state == ST_MAT_DATA);
assign out_data = out_data_en ? in_pxd_last : 0;
/* Compositor */
assign out_pxd = (win_hsync_int) ? in_pxd_reg : win_pxd;
endmodule

View file

@ -35,14 +35,14 @@ module window_matcher_tb();
wire win_hsync;
wire win_vsync;
wire win_blank;
wire win_locked;
wire [11:0] win_w;
wire [11:0] win_h;
wire out_data_en;
wire out_data_valid;
wire [23:0] out_data;
wire pattern_locked;
wire [11:0] pattern_w;
wire [11:0] pattern_h;
localparam period = 4;
@ -89,14 +89,17 @@ module window_matcher_tb();
.win_hsync(win_hsync),
.win_vsync(win_vsync),
.win_blank(win_blank),
.win_locked(win_locked),
.win_w(win_w),
.win_h(win_h),
.out_data_en(out_data_en),
.out_data_valid(out_data_valid),
.out_data(out_data),
.pattern_locked(pattern_locked),
.pattern_w(pattern_w),
.pattern_h(pattern_h)
.win_red(8'haa),
.win_green(8'haa),
.win_blue(8'haa)
);
endmodule

View file

@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "markdown",
"id": "parental-cruise",
"id": "peaceful-dream",
"metadata": {},
"source": [
"# Window Matcher Testcase Generator"
@ -11,7 +11,7 @@
{
"cell_type": "code",
"execution_count": 67,
"id": "leading-attachment",
"id": "sustained-reservoir",
"metadata": {},
"outputs": [],
"source": [
@ -32,7 +32,7 @@
{
"cell_type": "code",
"execution_count": 93,
"id": "involved-palmer",
"id": "modular-partnership",
"metadata": {},
"outputs": [],
"source": [
@ -121,7 +121,7 @@
{
"cell_type": "code",
"execution_count": 87,
"id": "enhanced-method",
"id": "yellow-affiliate",
"metadata": {},
"outputs": [
{
@ -149,7 +149,7 @@
{
"cell_type": "code",
"execution_count": 94,
"id": "bibliographic-stockholm",
"id": "quick-proposition",
"metadata": {},
"outputs": [],
"source": [
@ -173,7 +173,7 @@
{
"cell_type": "code",
"execution_count": 95,
"id": "decent-offering",
"id": "usual-flash",
"metadata": {},
"outputs": [
{
@ -243,7 +243,7 @@
{
"cell_type": "code",
"execution_count": 54,
"id": "together-tiger",
"id": "surrounded-devon",
"metadata": {},
"outputs": [],
"source": [
@ -264,8 +264,8 @@
},
{
"cell_type": "code",
"execution_count": 73,
"id": "executive-storage",
"execution_count": 96,
"id": "listed-addition",
"metadata": {},
"outputs": [
{
@ -314,8 +314,8 @@
" \n",
" if (!(win_hsync == 0)) $finish;\n",
" if (!(win_vsync == 0)) $finish;\n",
" if (!(in_blank == 1 || pattern_w == 0)) $finish;\n",
" if (!(in_blank == 1 || pattern_h == 0)) $finish;\n",
" if (!(in_blank == 1 || win_w == 0)) $finish;\n",
" if (!(in_blank == 1 || win_h == 0)) $finish;\n",
" if (!(!out_data_valid || out_data_en)) $finish;\n",
" if (read_pos > 1) begin\n",
" if (!(out_data_valid == ( win_hsync_exp_last && ~win_header_last))) $finish;\n",
@ -341,10 +341,10 @@
" @(posedge clk);\n",
"end\n",
"\n",
"if (!(pattern_locked == {{(win_w > 0)|int}})) $finish;\n",
"if (!(win_locked == {{(win_w > 0)|int}})) $finish;\n",
"\n",
"if (!(pattern_w == {{win_w}})) $finish;\n",
"if (!(pattern_h == {{win_h}})) $finish;\n",
"if (!(win_w == {{win_w}})) $finish;\n",
"if (!(win_h == {{win_h}})) $finish;\n",
"\n",
"for (read_pos=0; read_pos<{{fb_len}}; read_pos=read_pos+1) begin\n",
" if (read_pos > 0) begin\n",
@ -364,9 +364,9 @@
" @(posedge clk);\n",
"end\n",
"\n",
"if (!(pattern_locked == 0)) $finish;\n",
"if (!(pattern_w == 0)) $finish;\n",
"if (!(pattern_h == 0)) $finish;\n",
"if (!(win_locked == 0)) $finish;\n",
"if (!(win_w == 0)) $finish;\n",
"if (!(win_h == 0)) $finish;\n",
"\n",
"/* End of generated test case {{name}} */\n",
"'''\n",
@ -390,7 +390,7 @@
{
"cell_type": "code",
"execution_count": 8,
"id": "naughty-kitchen",
"id": "protected-bronze",
"metadata": {},
"outputs": [],
"source": [
@ -402,7 +402,7 @@
{
"cell_type": "code",
"execution_count": 9,
"id": "exposed-paste",
"id": "unknown-framing",
"metadata": {},
"outputs": [
{
@ -425,7 +425,7 @@
{
"cell_type": "code",
"execution_count": 10,
"id": "digital-carnival",
"id": "political-blink",
"metadata": {},
"outputs": [
{
@ -448,7 +448,7 @@
{
"cell_type": "code",
"execution_count": 11,
"id": "obvious-diagnosis",
"id": "intelligent-locator",
"metadata": {},
"outputs": [
{
@ -486,7 +486,7 @@
{
"cell_type": "code",
"execution_count": 12,
"id": "conservative-album",
"id": "breeding-representation",
"metadata": {},
"outputs": [
{
@ -526,7 +526,7 @@
{
"cell_type": "code",
"execution_count": 13,
"id": "excessive-equality",
"id": "duplicate-riverside",
"metadata": {},
"outputs": [
{
@ -566,7 +566,7 @@
{
"cell_type": "code",
"execution_count": 14,
"id": "cheap-charleston",
"id": "homeless-posting",
"metadata": {},
"outputs": [
{

View file

@ -11,272 +11,233 @@
</db_ref>
</db_ref_list>
<zoom_setting>
<ZoomStartTime time="1578610166fs"></ZoomStartTime>
<ZoomEndTime time="1579130767fs"></ZoomEndTime>
<Cursor1Time time="1579044000fs"></Cursor1Time>
<ZoomStartTime time="379298750fs"></ZoomStartTime>
<ZoomEndTime time="379559451fs"></ZoomEndTime>
<Cursor1Time time="379516000fs"></Cursor1Time>
</zoom_setting>
<column_width_setting>
<NameColumnWidth column_width="175"></NameColumnWidth>
<ValueColumnWidth column_width="170"></ValueColumnWidth>
<ValueColumnWidth column_width="166"></ValueColumnWidth>
</column_width_setting>
<WVObjectSize size="56" />
<wvobject fp_name="/window_matcher_tb/clk" type="logic">
<WVObjectSize size="50" />
<wvobject fp_name="/window_matcher_tb/window_matcher_i/clk" type="logic">
<obj_property name="ElementShortName">clk</obj_property>
<obj_property name="ObjectShortName">clk</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/rst" type="logic">
<wvobject fp_name="/window_matcher_tb/window_matcher_i/rst" type="logic">
<obj_property name="ElementShortName">rst</obj_property>
<obj_property name="ObjectShortName">rst</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/in_blank" type="logic">
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_blank" type="logic">
<obj_property name="ElementShortName">in_blank</obj_property>
<obj_property name="ObjectShortName">in_blank</obj_property>
<obj_property name="CustomSignalColor">#00FFFF</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/in_hsync" type="logic">
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_hsync" type="logic">
<obj_property name="ElementShortName">in_hsync</obj_property>
<obj_property name="ObjectShortName">in_hsync</obj_property>
<obj_property name="CustomSignalColor">#00FFFF</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/in_vsync" type="logic">
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_vsync" type="logic">
<obj_property name="ElementShortName">in_vsync</obj_property>
<obj_property name="ObjectShortName">in_vsync</obj_property>
<obj_property name="CustomSignalColor">#00FFFF</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/in_red" type="array">
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_red" type="array">
<obj_property name="ElementShortName">in_red[7:0]</obj_property>
<obj_property name="ObjectShortName">in_red[7:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/in_green" type="array">
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_green" type="array">
<obj_property name="ElementShortName">in_green[7:0]</obj_property>
<obj_property name="ObjectShortName">in_green[7:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/in_blue" type="array">
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_blue" type="array">
<obj_property name="ElementShortName">in_blue[7:0]</obj_property>
<obj_property name="ObjectShortName">in_blue[7:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/win_hsync" type="logic">
<wvobject fp_name="/window_matcher_tb/window_matcher_i/out_hsync" type="logic">
<obj_property name="ElementShortName">out_hsync</obj_property>
<obj_property name="ObjectShortName">out_hsync</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/out_vsync" type="logic">
<obj_property name="ElementShortName">out_vsync</obj_property>
<obj_property name="ObjectShortName">out_vsync</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/out_red" type="array">
<obj_property name="ElementShortName">out_red[7:0]</obj_property>
<obj_property name="ObjectShortName">out_red[7:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/out_green" type="array">
<obj_property name="ElementShortName">out_green[7:0]</obj_property>
<obj_property name="ObjectShortName">out_green[7:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/out_blue" type="array">
<obj_property name="ElementShortName">out_blue[7:0]</obj_property>
<obj_property name="ObjectShortName">out_blue[7:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_hsync" type="logic">
<obj_property name="ElementShortName">win_hsync</obj_property>
<obj_property name="ObjectShortName">win_hsync</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/win_vsync" type="logic">
<obj_property name="ElementShortName">win_vsync</obj_property>
<obj_property name="ObjectShortName">win_vsync</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/win_blank" type="logic">
<obj_property name="ElementShortName">win_blank</obj_property>
<obj_property name="ObjectShortName">win_blank</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/out_data_en" type="logic">
<obj_property name="ElementShortName">out_data_en</obj_property>
<obj_property name="ObjectShortName">out_data_en</obj_property>
<obj_property name="CustomSignalColor">#FFFF00</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/out_data_valid" type="logic">
<obj_property name="ElementShortName">out_data_valid</obj_property>
<obj_property name="ObjectShortName">out_data_valid</obj_property>
<obj_property name="CustomSignalColor">#FFFF00</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/out_data" type="array">
<obj_property name="ElementShortName">out_data[23:0]</obj_property>
<obj_property name="ObjectShortName">out_data[23:0]</obj_property>
<obj_property name="CustomSignalColor">#FFFF00</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/pattern_w" type="array">
<obj_property name="ElementShortName">pattern_w[11:0]</obj_property>
<obj_property name="ObjectShortName">pattern_w[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/pattern_h" type="array">
<obj_property name="ElementShortName">pattern_h[11:0]</obj_property>
<obj_property name="ObjectShortName">pattern_h[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/read_pos" type="array">
<obj_property name="ElementShortName">read_pos[31:0]</obj_property>
<obj_property name="ObjectShortName">read_pos[31:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/period" type="array">
<obj_property name="ElementShortName">period[31:0]</obj_property>
<obj_property name="ObjectShortName">period[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/expected_data" type="array">
<obj_property name="ElementShortName">expected_data[23:0]</obj_property>
<obj_property name="ObjectShortName">expected_data[23:0]</obj_property>
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/pattern_w" type="array">
<obj_property name="ElementShortName">pattern_w[11:0]</obj_property>
<obj_property name="ObjectShortName">pattern_w[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/pattern_h" type="array">
<obj_property name="ElementShortName">pattern_h[11:0]</obj_property>
<obj_property name="ObjectShortName">pattern_h[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/cur_x" type="array">
<obj_property name="ElementShortName">cur_x[11:0]</obj_property>
<obj_property name="ObjectShortName">cur_x[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/cur_y" type="array">
<obj_property name="ElementShortName">cur_y[11:0]</obj_property>
<obj_property name="ObjectShortName">cur_y[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/cur_x_sr" type="array">
<obj_property name="ElementShortName">cur_x_sr[3:0][11:0]</obj_property>
<obj_property name="ObjectShortName">cur_x_sr[3:0][11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
<obj_property name="isExpanded"></obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/marker_x" type="array">
<obj_property name="ElementShortName">marker_x[11:0]</obj_property>
<obj_property name="ObjectShortName">marker_x[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/marker_y" type="array">
<obj_property name="ElementShortName">marker_y[11:0]</obj_property>
<obj_property name="ObjectShortName">marker_y[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/rx_x" type="array">
<obj_property name="ElementShortName">rx_x[11:0]</obj_property>
<obj_property name="ObjectShortName">rx_x[11:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/rx_y" type="array">
<obj_property name="ElementShortName">rx_y[11:0]</obj_property>
<obj_property name="ObjectShortName">rx_y[11:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_pxd" type="array">
<obj_property name="ElementShortName">in_pxd[23:0]</obj_property>
<obj_property name="ObjectShortName">in_pxd[23:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_pxd_match_sr" type="array">
<obj_property name="ElementShortName">in_pxd_match_sr[11:0]</obj_property>
<obj_property name="ObjectShortName">in_pxd_match_sr[11:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_pxd_match" type="array">
<obj_property name="ElementShortName">in_pxd_match[3:0]</obj_property>
<obj_property name="ObjectShortName">in_pxd_match[3:0]</obj_property>
<obj_property name="isExpanded"></obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/last_hsync" type="logic">
<obj_property name="ElementShortName">last_hsync</obj_property>
<obj_property name="ObjectShortName">last_hsync</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/last_vsync" type="logic">
<obj_property name="ElementShortName">last_vsync</obj_property>
<obj_property name="ObjectShortName">last_vsync</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_pxd_pattern_match" type="logic">
<obj_property name="ElementShortName">in_pxd_pattern_match</obj_property>
<obj_property name="ObjectShortName">in_pxd_pattern_match</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/pattern_found" type="logic">
<obj_property name="ElementShortName">pattern_found</obj_property>
<obj_property name="ObjectShortName">pattern_found</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/pattern_locked" type="logic">
<obj_property name="ElementShortName">pattern_locked</obj_property>
<obj_property name="ObjectShortName">pattern_locked</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/pattern_rx" type="logic">
<obj_property name="ElementShortName">pattern_rx</obj_property>
<obj_property name="ObjectShortName">pattern_rx</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/pattern_meta_rx" type="logic">
<obj_property name="ElementShortName">pattern_meta_rx</obj_property>
<obj_property name="ObjectShortName">pattern_meta_rx</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/pattern_data_rx" type="logic">
<obj_property name="ElementShortName">pattern_data_rx</obj_property>
<obj_property name="ObjectShortName">pattern_data_rx</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_hsync_int" type="logic">
<obj_property name="ElementShortName">win_hsync_int</obj_property>
<obj_property name="ObjectShortName">win_hsync_int</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_vsync_int" type="logic">
<obj_property name="ElementShortName">win_vsync_int</obj_property>
<obj_property name="ObjectShortName">win_vsync_int</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/end_x" type="array">
<obj_property name="ElementShortName">end_x[11:0]</obj_property>
<obj_property name="ObjectShortName">end_x[11:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/end_y" type="array">
<obj_property name="ElementShortName">end_y[11:0]</obj_property>
<obj_property name="ObjectShortName">end_y[11:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/pattern_meta" type="array">
<obj_property name="ElementShortName">pattern_meta[3:0][23:0]</obj_property>
<obj_property name="ObjectShortName">pattern_meta[3:0][23:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/PATTERN_0" type="array">
<obj_property name="ElementShortName">PATTERN_0[23:0]</obj_property>
<obj_property name="ObjectShortName">PATTERN_0[23:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/PATTERN_1" type="array">
<obj_property name="ElementShortName">PATTERN_1[23:0]</obj_property>
<obj_property name="ObjectShortName">PATTERN_1[23:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/PATTERN_2" type="array">
<obj_property name="ElementShortName">PATTERN_2[23:0]</obj_property>
<obj_property name="ObjectShortName">PATTERN_2[23:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/PATTERN_3" type="array">
<obj_property name="ElementShortName">PATTERN_3[23:0]</obj_property>
<obj_property name="ObjectShortName">PATTERN_3[23:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/testcase_id" type="array">
<obj_property name="ElementShortName">testcase_id[31:0]</obj_property>
<obj_property name="ObjectShortName">testcase_id[31:0]</obj_property>
<obj_property name="CustomSignalColor">#008000</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/win_hsync_exp" type="logic">
<obj_property name="ElementShortName">win_hsync_exp</obj_property>
<obj_property name="ObjectShortName">win_hsync_exp</obj_property>
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_vsync" type="logic">
<obj_property name="ElementShortName">win_vsync</obj_property>
<obj_property name="ObjectShortName">win_vsync</obj_property>
<obj_property name="CustomSignalColor">#FFFF00</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_vsync_int" type="logic">
<obj_property name="ElementShortName">win_vsync_int</obj_property>
<obj_property name="ObjectShortName">win_vsync_int</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/win_vsync_exp" type="logic">
<obj_property name="ElementShortName">win_vsync_exp</obj_property>
<obj_property name="ObjectShortName">win_vsync_exp</obj_property>
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/win_header" type="logic">
<obj_property name="ElementShortName">win_header</obj_property>
<obj_property name="ObjectShortName">win_header</obj_property>
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/out_data_en" type="logic">
<obj_property name="ElementShortName">out_data_en</obj_property>
<obj_property name="ObjectShortName">out_data_en</obj_property>
<obj_property name="CustomSignalColor">#FFA500</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/win_hsync_exp_last" type="logic">
<obj_property name="ElementShortName">win_hsync_exp_last</obj_property>
<obj_property name="ObjectShortName">win_hsync_exp_last</obj_property>
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/out_data_valid" type="logic">
<obj_property name="ElementShortName">out_data_valid</obj_property>
<obj_property name="ObjectShortName">out_data_valid</obj_property>
<obj_property name="CustomSignalColor">#FFA500</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/win_vsync_exp_last" type="logic">
<obj_property name="ElementShortName">win_vsync_exp_last</obj_property>
<obj_property name="ObjectShortName">win_vsync_exp_last</obj_property>
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/out_data" type="array">
<obj_property name="ElementShortName">out_data[23:0]</obj_property>
<obj_property name="ObjectShortName">out_data[23:0]</obj_property>
<obj_property name="CustomSignalColor">#FFA500</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/win_header_last" type="logic">
<obj_property name="ElementShortName">win_header_last</obj_property>
<obj_property name="ObjectShortName">win_header_last</obj_property>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_pxd" type="array">
<obj_property name="ElementShortName">in_pxd[23:0]</obj_property>
<obj_property name="ObjectShortName">in_pxd[23:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_pxd" type="array">
<obj_property name="ElementShortName">win_pxd[23:0]</obj_property>
<obj_property name="ObjectShortName">win_pxd[23:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/out_pxd" type="array">
<obj_property name="ElementShortName">out_pxd[23:0]</obj_property>
<obj_property name="ObjectShortName">out_pxd[23:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_pxd_match" type="array">
<obj_property name="ElementShortName">in_pxd_match[3:0]</obj_property>
<obj_property name="ObjectShortName">in_pxd_match[3:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_pxd_match_sr" type="array">
<obj_property name="ElementShortName">in_pxd_match_sr[2:0][3:0]</obj_property>
<obj_property name="ObjectShortName">in_pxd_match_sr[2:0][3:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_pxd_pattern_match" type="logic">
<obj_property name="ElementShortName">in_pxd_pattern_match</obj_property>
<obj_property name="ObjectShortName">in_pxd_pattern_match</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/scan_x" type="array">
<obj_property name="ElementShortName">scan_x[11:0]</obj_property>
<obj_property name="ObjectShortName">scan_x[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/scan_y" type="array">
<obj_property name="ElementShortName">scan_y[11:0]</obj_property>
<obj_property name="ObjectShortName">scan_y[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/window_x" type="array">
<obj_property name="ElementShortName">window_x[11:0]</obj_property>
<obj_property name="ObjectShortName">window_x[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
<obj_property name="CustomSignalColor">#00FF7F</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/window_y" type="array">
<obj_property name="ElementShortName">window_y[11:0]</obj_property>
<obj_property name="ObjectShortName">window_y[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
<obj_property name="CustomSignalColor">#00FF7F</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_w_int" type="array">
<obj_property name="ElementShortName">win_w_int[11:0]</obj_property>
<obj_property name="ObjectShortName">win_w_int[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_h_int" type="array">
<obj_property name="ElementShortName">win_h_int[11:0]</obj_property>
<obj_property name="ObjectShortName">win_h_int[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_w" type="array">
<obj_property name="ElementShortName">win_w[11:0]</obj_property>
<obj_property name="ObjectShortName">win_w[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_h" type="array">
<obj_property name="ElementShortName">win_h[11:0]</obj_property>
<obj_property name="ObjectShortName">win_h[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_hsync_ctr" type="array">
<obj_property name="ElementShortName">win_hsync_ctr[11:0]</obj_property>
<obj_property name="ObjectShortName">win_hsync_ctr[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/win_vsync_ctr" type="array">
<obj_property name="ElementShortName">win_vsync_ctr[11:0]</obj_property>
<obj_property name="ObjectShortName">win_vsync_ctr[11:0]</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/matcher_state" type="array">
<obj_property name="ElementShortName">matcher_state[5:0]</obj_property>
<obj_property name="ObjectShortName">matcher_state[5:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/matched" type="logic">
<obj_property name="ElementShortName">matched</obj_property>
<obj_property name="ObjectShortName">matched</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/scan_x_reg" type="array">
<obj_property name="ElementShortName">scan_x_reg[3:0][11:0]</obj_property>
<obj_property name="ObjectShortName">scan_x_reg[3:0][11:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_hsync_reg" type="logic">
<obj_property name="ElementShortName">in_hsync_reg</obj_property>
<obj_property name="ObjectShortName">in_hsync_reg</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_vsync_reg" type="logic">
<obj_property name="ElementShortName">in_vsync_reg</obj_property>
<obj_property name="ObjectShortName">in_vsync_reg</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/in_pxd_reg" type="array">
<obj_property name="ElementShortName">in_pxd_reg[23:0]</obj_property>
<obj_property name="ObjectShortName">in_pxd_reg[23:0]</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/window_matcher_i/match_locked" type="logic">
<obj_property name="ElementShortName">match_locked</obj_property>
<obj_property name="ObjectShortName">match_locked</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/testcase_id" type="array">
<obj_property name="ElementShortName">testcase_id[31:0]</obj_property>
<obj_property name="ObjectShortName">testcase_id[31:0]</obj_property>
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
<obj_property name="Radix">UNSIGNEDDECRADIX</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/expected_data" type="array">
<obj_property name="ElementShortName">expected_data[23:0]</obj_property>
<obj_property name="ObjectShortName">expected_data[23:0]</obj_property>
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
@ -286,4 +247,16 @@
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/read_pos" type="array">
<obj_property name="ElementShortName">read_pos[31:0]</obj_property>
<obj_property name="ObjectShortName">read_pos[31:0]</obj_property>
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
<wvobject fp_name="/window_matcher_tb/win_header" type="logic">
<obj_property name="ElementShortName">win_header</obj_property>
<obj_property name="ObjectShortName">win_header</obj_property>
<obj_property name="CustomSignalColor">#FAAFBE</obj_property>
<obj_property name="UseCustomSignalColor">true</obj_property>
</wvobject>
</wave_config>