***********************************************************
LAB :: Objective
***********************************************************
How to bind a design module to a property module that carries assertions
for the design module.

And further confirm your understanding of writing a property with/without implication.

***********************************************************
LAB :: Database 
***********************************************************

FILES:

	dut.v :: Verilog module that drives a simple req/gnt protocol. 

	dut_property.sv :: File that contains 'dut' properties/assertions. 

	test_dut.sv :: Testbench for the 'dut'.
		       This is the file in which you'll 'bind' the 'dut' with 'dut_property'

	LAB_QUESTIONS :: This file contains questions that you need to answer.

***********************************************************
LAB :: What you will do... 
***********************************************************

	1) 'bind' the design module 'dut' with it's property module 'dut_property'

	2) Compile/simulate according to instructions given below.

	3) Study simulation log.

	4) Answer questions embedded in the file ./LAB_QUESTIONS

***********************************************************
LAB :: How To compile/simulate 
***********************************************************

1.	% cd <myDir>/SVA_LAB/LAB1

2.	% vi test_dut.sv
	Search for "LAB EXERCISE - START"
	
	Add code after the comments to 
	    'bind' the design 'dut' with it's property module 'dut_property'

	Note:
	You need to know the names of the ports in the design and the property module
	to be able to bind them. Here they are:
	
	Design module (dut.v)
	----------------------
	module dut(clk, req, gnt);
	           input logic clk,req;
	           output logic gnt;

	Property module (dut_property.sv)
	---------------------------------
	module dut_property(clock,request,grant);
	     input pclk,preq,pgnt;

	Save the file.

	Then follow the compile/simulate steps described below.

3.	% run_no_implication

 	This will create test_dut_no_implication.log
	Compare your log with the one stored in .solution/test_dut_no_implication.log

	If you did a correct bind of 'dut' and 'dut_property', you will see a few PASS/FAIL
	in the log. If not, you won't see any pass or fail

	-)  Study test_dut_no_implication.log 
	-)  Answer the questions embedded in the file ./LAB_QUESTIONS 
	    for +define+no_implication

4.	% run_implication 	

	This will create test_dut_implication.log
	Compare ('diff') your log with the one stored in .solution/test_dut_implication.log

	If you did a correct bind of 'dut' and 'dut_property', you will see a few PASS/FAIL
	in the log. If not, you won't see any pass or fail

	-)  Study test_dut_implication.log 
	-)  Answer the questions embedded in the file ./LAB_QUESTIONS 
	    for +define+implication

5.	% run_implication_novac 	

	This will create test_dut_implication_novac.log
	Compare your log with the one stored in .solution/test_dut_implication_novac.log

	If you did a correct bind of 'dut' and 'dut_property', you will see a few PASS/FAIL
	in the log. If not, you won't see any pass or fail

	-)  Study test_dut_implication_novac.log 
	-)  Answer the questions embedded in the  file ./LAB_QUESTIONS
	    for +define+implication_novac

***********************************************************
