--- Quote Start ---
Is my understanding correct?
--- Quote End ---
You can have both:
1. Initial values that provide the default register state after FPGA configuration
logic [31:0] myreg = 32'h12345678;
signal myreg : std_logic_vector(31 downto 0) := X"12345678";
2. Reset values, eg., synchronous reset
always@(posedge clk)
if (rst)
myreg <= 32'hABCDABCD;
...
process(clk)
if rising_edge(clk) then
if (rst = '1') then
myreg <= X"ABCDABCD"
...
I've just been running some tests with Xilinx (ISE) and Synplify. For Xilinx devices, the initial value is the INIT value for their registers, while the reset process generates the SRVAL.
Synthesis tools can choose to do what they like if you do not fully specify the power-on state, eg., Synplify will use the reset value as the init value, so your FPGA will power on with the reset value, even if reset did not assert ... in general this is probably what you wanted.
Because I like Modelsim and synthesis to match, I typically assign both the initial value and reset value to the same value.
Cheers
Dave