@@ -363,3 +363,64 @@ xls_dslx_test(
363
363
name = "rle_block_dec_dslx_test" ,
364
364
library = ":rle_block_dec_dslx" ,
365
365
)
366
+
367
+ xls_dslx_verilog (
368
+ name = "rle_block_dec_verilog" ,
369
+ codegen_args = {
370
+ "module_name" : "RleBlockDecoder" ,
371
+ "delay_model" : "asap7" ,
372
+ "pipeline_stages" : "3" ,
373
+ "reset" : "rst" ,
374
+ "use_system_verilog" : "false" ,
375
+ },
376
+ dslx_top = "RleBlockDecoder" ,
377
+ library = ":rle_block_dec_dslx" ,
378
+ # TODO: 2024-01-15: Workaround for https://github.com/google/xls/issues/869
379
+ # Force proc inlining and set last internal proc as top proc for IR optimization
380
+ opt_ir_args = {
381
+ "inline_procs" : "true" ,
382
+ "top" : "__rle_block_dec__RleBlockDecoder__BatchPacker_0_next" ,
383
+ },
384
+ verilog_file = "rle_block_dec.v" ,
385
+ )
386
+
387
+ xls_benchmark_ir (
388
+ name = "rle_block_dec_opt_ir_benchmark" ,
389
+ src = ":rle_block_dec_verilog.opt.ir" ,
390
+ benchmark_ir_args = {
391
+ "pipeline_stages" : "3" ,
392
+ "delay_model" : "asap7" ,
393
+ },
394
+ )
395
+
396
+ verilog_library (
397
+ name = "rle_block_dec_verilog_lib" ,
398
+ srcs = [
399
+ ":rle_block_dec.v" ,
400
+ ],
401
+ )
402
+
403
+ synthesize_rtl (
404
+ name = "rle_block_dec_synth_asap7" ,
405
+ standard_cells = "@org_theopenroadproject_asap7sc7p5t_28//:asap7-sc7p5t_rev28_rvt" ,
406
+ top_module = "RleBlockDecoder" ,
407
+ deps = [
408
+ ":rle_block_dec_verilog_lib" ,
409
+ ],
410
+ )
411
+
412
+ benchmark_synth (
413
+ name = "rle_block_dec_benchmark_synth" ,
414
+ synth_target = ":rle_block_dec_synth_asap7" ,
415
+ )
416
+
417
+ place_and_route (
418
+ name = "rle_block_dec_place_and_route" ,
419
+ clock_period = "750" ,
420
+ core_padding_microns = 2 ,
421
+ min_pin_distance = "0.5" ,
422
+ placement_density = "0.30" ,
423
+ skip_detailed_routing = True ,
424
+ synthesized_rtl = ":rle_block_dec_synth_asap7" ,
425
+ target_die_utilization_percentage = "10" ,
426
+ )
0 commit comments