> 1. ... can I use "*" directly in my RTL code for Design Compiler synthesis?
Yes, the basic version of Design_Compiler will automatically turn the "*" operator into a DesignWare component. If you have more advanced DC license (like DC-Ultra, or Designware-Foundation), then the speed/area of the multiplier can be further improved.
> 2. A adder/substracter ...
Design Compiler has Designware components for all basic arithmetic operations (+, -, *, /, %.)
assign as_out = addsub ? ( a + b ) : ( a - b );
^^^Current versions of Design Compiler are smart enough to automatically convert this RTL into an addsub Designware unit.
> 3. ROM,single port RAM,dual port RAM are all used in my design,how can I implement these without vendor's help?
You can't...if the RAM/ROM is "small" (under 1000 total bits...), then you simply write the RAM/ROM using normal RTL-code. The synthesis-tool will use flipflops to implement your RAM/ROM -- this is not efficient, but usable.
The larger the memory-structure gets, the longer/harder Design Compiler will struggle to compile your memory. For example, if you are using the whole area of a BlockRAM (18Kbit), you will *NEED* the RAM-compiler toolset from your foundry vendor.